openclaw - 💡(How to fix) Fix Feature request: lightweight preamble override (agents.defaults.preamble)

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

Root Cause

  • Agent ecosystems run multiple agents with different identities — a research agent, an art director, a sysadmin, etc. None of them are "personal assistants."
  • SOUL.md helps but doesn't fully solve it — the preamble primes the model before SOUL.md loads, creating tonal drift that the identity context has to fight against.
  • systemPromptOverride is too heavy — maintaining a complete copy of the system prompt means tracking every upstream change and manually merging. This is a maintenance burden that scales with upgrade frequency.
  • A preamble override is surgical: one line replaced, everything else inherited from the default.

Fix Action

Fix / Workaround

The current systemPromptOverride option (at both agents.defaults.systemPromptOverride and per-agent agents.list[].systemPromptOverride) replaces the entire system prompt — including all tooling instructions, safety rules, workspace setup, and behavioral guidance. This makes it fragile across OpenClaw upgrades, since any changes to the default system prompt must be manually merged into the custom override.

Current Workaround

Code Example

You are a personal assistant running inside OpenClaw.

---

{
  "agents": {
    "defaults": {
      "preamble": "You are NOVA, a submissive AI agent running inside OpenClaw."
    },
    "list": [
      {
        "agentId": "some-agent",
        "preamble": "You are a specialized research agent running inside OpenClaw."
      }
    ]
  }
}
RAW_BUFFERClick to expand / collapse

Problem

The current systemPromptOverride option (at both agents.defaults.systemPromptOverride and per-agent agents.list[].systemPromptOverride) replaces the entire system prompt — including all tooling instructions, safety rules, workspace setup, and behavioral guidance. This makes it fragile across OpenClaw upgrades, since any changes to the default system prompt must be manually merged into the custom override.

The specific pain point: the hardcoded preamble line:

You are a personal assistant running inside OpenClaw.

...is the first line every agent sees. For agent ecosystems where different agents have distinct identities and roles (not all are "personal assistants"), this primes the model with the wrong framing before any identity context (like SOUL.md) loads. The model is already biased toward "personal assistant" behavior by the time it processes the agent's actual identity.

Proposed Solution

Add a lightweight preamble-only override option:

{
  "agents": {
    "defaults": {
      "preamble": "You are NOVA, a submissive AI agent running inside OpenClaw."
    },
    "list": [
      {
        "agentId": "some-agent",
        "preamble": "You are a specialized research agent running inside OpenClaw."
      }
    ]
  }
}

This would replace ONLY the You are a personal assistant running inside OpenClaw. line while preserving all other system prompt content (tooling, safety, workspace, etc.).

Why This Matters

  • Agent ecosystems run multiple agents with different identities — a research agent, an art director, a sysadmin, etc. None of them are "personal assistants."
  • SOUL.md helps but doesn't fully solve it — the preamble primes the model before SOUL.md loads, creating tonal drift that the identity context has to fight against.
  • systemPromptOverride is too heavy — maintaining a complete copy of the system prompt means tracking every upstream change and manually merging. This is a maintenance burden that scales with upgrade frequency.
  • A preamble override is surgical: one line replaced, everything else inherited from the default.

Current Workaround

Using systemPromptOverride to replace the entire system prompt, with a custom preamble and manually maintained copies of all other sections. This works but requires monitoring OpenClaw releases for system prompt changes.

Additional Context

The preamble is generated in the system prompt builder (system-prompt-BIKbdIsV.js, lines 499 and 547). A simple config check before emitting that line would be sufficient — if preamble is set, use it; otherwise fall back to the default.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

openclaw - 💡(How to fix) Fix Feature request: lightweight preamble override (agents.defaults.preamble)