Skip to content

feat(cli): add --message-file to openclaw agent#93351

Merged
vincentkoc merged 3 commits into
openclaw:mainfrom
ooiuuii:fix/agent-message-file
Jun 22, 2026
Merged

feat(cli): add --message-file to openclaw agent#93351
vincentkoc merged 3 commits into
openclaw:mainfrom
ooiuuii:fix/agent-message-file

Conversation

@ooiuuii

@ooiuuii ooiuuii commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

Summary

  • openclaw agent currently requires inline --message, which makes long prompts, Markdown/code blocks, JSON, and Windows PowerShell multiline content awkward or fragile to pass through shell quoting.
  • This PR adds --message-file <path> to the openclaw agent one-shot CLI, reads the file as valid UTF-8, strips an optional UTF-8 BOM, and preserves multiline content for both Gateway and --local dispatch.
  • Inline --message behavior stays unchanged: it is still trimmed and sent through the existing dispatch path.
  • Out of scope: openclaw message send, channel adapter chunking/truncation semantics, live delivery limits, and any transport/protocol changes.
  • Success looks like callers being able to run openclaw agent --agent ops --message-file ./task.md without shell-escaping the prompt, while clear errors catch missing files, invalid UTF-8, empty files, or passing both message inputs.
  • Reviewer focus: CLI option semantics, whether strict UTF-8 rejection is the right contract, and preserving the exact file body after the new input boundary.

Linked context

No separate issue. This is a small CLI ergonomics gap found while trying to hand off multiline agent work from Windows/PowerShell.

Related #79182 and #79200 cover the adjacent openclaw message send --message-file surface. This PR intentionally targets openclaw agent only and does not close that issue or replace that PR.

Real behavior proof (required for external PRs)

  • Behavior or issue addressed: openclaw agent can now accept a multiline prompt from --message-file instead of requiring all content to fit safely inside a shell-quoted --message argument.
  • Real environment tested: Windows source checkout on branch fix/agent-message-file, commit 7614ed4e36, Node v22.22.0, pnpm 11.2.2, built source checkout, isolated OPENCLAW_STATE_DIR and OPENCLAW_CONFIG_PATH under .artifacts/agent-message-file-proof.
  • Exact steps or command run after this patch:
# task.md contained:
# first line
# ```json
# {"ok":true}
# ```
# second line

node scripts/run-node.mjs --help

node openclaw.mjs agent `
  --message-file .artifacts/agent-message-file-proof/task.md `
  --json

node openclaw.mjs agent `
  --message inline `
  --message-file .artifacts/agent-message-file-proof/task.md `
  --agent main `
  --json
  • Evidence after fix:
STDOUT:

STDERR:
Error: No target session selected. Use --agent <id>, --session-key <key>, --session-id <id>, or --to <E.164>. Run openclaw agents list to see agents.

EXIT=1
STDOUT:

STDERR:
Error: Use either --message or --message-file, not both.

EXIT=1
  • Observed result after fix: the first command accepts --message-file, reads the file, and advances past message validation to the next real validation boundary (No target session selected). Before this patch, Commander required --message and would not accept a file-only agent invocation. The second command confirms the new input is mutually exclusive with inline --message.
  • What was not tested: live Gateway/model execution or channel delivery with a real configured agent. Exact Gateway parameter body preservation, missing-file handling, and invalid UTF-8 rejection are covered by focused tests below.
  • Proof limitations or environment constraints: the real CLI smoke intentionally stops before Gateway dispatch by omitting a target selector, so it proves the changed CLI input boundary without requiring local credentials, a running Gateway, or a model call.
  • Before evidence (optional but encouraged): source inspection before the patch showed openclaw agent registered .requiredOption("-m, --message <text>", ...), so --message-file could not be used as the sole message input.

Tests and validation

Commands run:

pnpm exec oxfmt --write src/commands/agent-via-gateway.ts src/commands/agent-via-gateway.test.ts src/cli/program/register.agent-turn.ts src/cli/program/register.agent.test.ts docs/cli/agent.md docs/tools/agent-send.md
pnpm exec oxlint src/commands/agent-via-gateway.ts src/commands/agent-via-gateway.test.ts src/cli/program/register.agent-turn.ts src/cli/program/register.agent.test.ts
node scripts/run-vitest.mjs src/commands/agent-via-gateway.test.ts src/cli/program/register.agent.test.ts
pnpm tsgo:core
pnpm tsgo:core:test
node scripts/check-docs-mdx.mjs docs/cli/agent.md docs/tools/agent-send.md
git diff --check

Results:

oxfmt: passed
oxlint: passed
register.agent.test.ts: 16 passed
agent-via-gateway.test.ts: 60 passed
tsgo:core: passed
tsgo:core:test: passed
Docs MDX check passed (2 files, 47ms)
git diff --check: passed

Regression coverage added:

  • CLI parser forwards --message-file to the agent command without requiring inline --message.
  • Gateway dispatch reads a UTF-8 file, removes an optional BOM, and preserves multiline content including code fences and the trailing newline.
  • Passing both --message and --message-file fails before dispatch.
  • Missing message files fail before dispatch with Message file not found.
  • Invalid UTF-8 files fail before dispatch with Message file must be valid UTF-8.

Risk checklist

Did user-visible behavior change? (Yes/No)

Yes. openclaw agent now accepts --message-file <path> as an alternative to inline --message.

Did config, environment, or migration behavior change? (Yes/No)

No.

Did security, auth, secrets, network, or tool execution behavior change? (Yes/No)

No. The CLI reads only the caller-supplied local path under the current OS user, before existing Gateway/local dispatch.

What is the highest-risk area?

Prompt content boundaries: accidentally trimming or corrupting file content before dispatch, or silently accepting non-UTF-8 input.

How is that risk mitigated?

Inline messages keep the old trim behavior, file messages preserve content after BOM removal, strict UTF-8 decoding rejects corrupt input, and focused tests assert the exact Gateway params.message value plus error paths.

Current review state

What is the next action?

Wait for GitHub CI, ClawSweeper, and maintainer review after PR creation.

What is still waiting on author, maintainer, CI, or external proof?

CI and ClawSweeper are pending. No known author-side blocker remains.

Which bot or reviewer comments were addressed?

None yet. This is a new PR.

@openclaw-barnacle openclaw-barnacle Bot added docs Improvements or additions to documentation cli CLI command changes commands Command implementations size: S proof: supplied External PR includes structured after-fix real behavior proof. labels Jun 15, 2026
@clawsweeper

clawsweeper Bot commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

Codex review: found issues before merge. Reviewed June 21, 2026, 9:02 AM ET / 13:02 UTC.

Summary
Adds --message-file to openclaw agent, reads UTF-8 files with BOM stripping and validation, updates CLI docs, and adds parser/dispatch tests.

PR surface: Source +67, Tests +80, Docs +18. Total +165 across 6 files.

Reproducibility: yes. at source level: pass an inline message with surrounding whitespace through openclaw agent --local --message ... or a Gateway-fallback path and compare the embedded command input before and after the PR. I did not run a live CLI smoke in this read-only review.

Review metrics: 1 noteworthy metric.

  • Agent CLI input contract: 1 flag added, 1 required option relaxed. This public command surface change moves missing-message enforcement from Commander into runtime validation and needs compatibility review before merge.

Stored data model
Persistent data-model change detected: serialized state: src/commands/agent-via-gateway.ts. Confirm migration or upgrade compatibility proof before merge.

Root-cause cluster
Relationship: canonical
Canonical: #93351
Summary: This PR is the narrow active branch for openclaw agent --message-file; related message send work is adjacent, and the broader stdin/file PR overlaps but is not a safer replacement.

Members:

Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything.

Merge readiness
Overall: 🦐 gold shrimp
Proof: 🦞 diamond lobster
Patch quality: 🦐 gold shrimp
Result: needs maintainer review before merge.

Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch.

Rank-up moves:

  • [P2] Preserve original inline --message bytes for --local and embedded Gateway fallback, and add the focused whitespace regression test.

Risk before merge

  • [P2] Merging this head can silently strip leading and trailing whitespace from existing inline openclaw agent --message ... prompts when the command uses --local or embedded Gateway fallback.
  • [P1] The PR is in an explicit clawsweeper:human-review pause, so automation should not merge it until a maintainer accepts or clears the compatibility repair path.

Maintainer options:

  1. Preserve inline prompt bytes (recommended)
    Use trimming for validation and Gateway request-body semantics only, while passing the original inline message string to embedded local/fallback dispatch and testing that path.
  2. Accept standardized trimming
    Maintainers can intentionally standardize all inline agent CLI messages as trimmed, but that should be a visible compatibility decision with docs and tests.

Next step before merge

  • [P2] The remaining fix is narrow, but the PR is explicitly paused with clawsweeper:human-review; a maintainer should approve the compatibility repair or ask the author to push it.

Security
Cleared: No concrete security or supply-chain regression found; the diff reads only an explicit caller-supplied local file and changes no dependencies, workflows, credentials, auth, or network permissions.

Review findings

  • [P2] Preserve inline message text for embedded dispatch — src/commands/agent-via-gateway.ts:232-236
Review details

Best possible solution:

Preserve inline message bytes for embedded dispatch while using trimming only for validation and Gateway request semantics, then add a focused whitespace regression test.

Do we have a high-confidence way to reproduce the issue?

Yes, at source level: pass an inline message with surrounding whitespace through openclaw agent --local --message ... or a Gateway-fallback path and compare the embedded command input before and after the PR. I did not run a live CLI smoke in this read-only review.

Is this the best way to solve the issue?

No, not yet: the file input itself is a narrow maintainable addition, but the current implementation normalizes existing inline input too early. The safer fix is to keep file messages exact while preserving current inline embedded-dispatch semantics.

Full review comments:

  • [P2] Preserve inline message text for embedded dispatch — src/commands/agent-via-gateway.ts:232-236
    This resolves inline --message with .trim() before shared dispatch options are built, so --local and embedded Gateway fallback now receive trimmed prompt text. Current main trims only the Gateway request body and passes the original options into embedded dispatch, where the callee validates with trim but keeps the original message bytes.
    Confidence: 0.92

Overall correctness: patch is incorrect
Overall confidence: 0.92

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against c85113e30e2a.

Label changes

Label justifications:

  • P2: This is a bounded CLI feature with a concrete compatibility regression, but it is not a core outage or emergency.
  • merge-risk: 🚨 compatibility: The diff can change existing inline openclaw agent --message ... prompt text before embedded local/fallback dispatch.
  • rating: 🦐 gold shrimp: Overall readiness is 🦐 gold shrimp; proof is 🦞 diamond lobster and patch quality is 🦐 gold shrimp.
  • status: 🚀 automerge armed: This PR is in ClawSweeper's automerge lane. Sufficient (terminal): The PR body includes after-fix Windows terminal output showing file-only input reaches the next validation boundary and inline/file mutual exclusion fails before dispatch; it does not cover the inline-whitespace compatibility finding.
  • proof: sufficient: Contributor real behavior proof is sufficient. The PR body includes after-fix Windows terminal output showing file-only input reaches the next validation boundary and inline/file mutual exclusion fails before dispatch; it does not cover the inline-whitespace compatibility finding.
Evidence reviewed

PR surface:

Source +67, Tests +80, Docs +18. Total +165 across 6 files.

View PR surface stats
Area Files Added Removed Net
Source 2 80 13 +67
Tests 2 80 0 +80
Docs 2 20 2 +18
Config 0 0 0 0
Generated 0 0 0 0
Other 0 0 0 0
Total 6 180 15 +165

What I checked:

  • Root and scoped policy read: Root AGENTS.md and docs/AGENTS.md were read fully; their whole-path PR review, CLI compatibility, and docs guidance affected this verdict. (AGENTS.md:1, c85113e30e2a)
  • Current main lacks the new flag: Current main still registers openclaw agent with required inline --message and no --message-file, so the PR is not already implemented on main or in the latest release. (src/cli/program/register.agent-turn.ts:37, c85113e30e2a)
  • Current main preserves inline bytes for embedded dispatch: Current main trims opts.message only into the Gateway request body, while localOpts is built by spreading the original dispatch options into embedded local/fallback runs. (src/commands/agent-via-gateway.ts:627, c85113e30e2a)
  • Embedded callee validates trim without replacing message: The embedded agent command checks message.trim() for validation but continues with the original message value, so caller-side trimming changes prompt bytes. (src/agents/agent-command.ts:619, c85113e30e2a)
  • PR head trims inline input too early: The PR resolves inline --message with .trim() before the shared dispatch options are used for both Gateway and embedded paths. (src/commands/agent-via-gateway.ts:232, cd05d4a0224e)
  • Tests cover file input but not inline whitespace compatibility: The PR adds UTF-8, BOM, missing-file, mutual-exclusion, and file-backed /compact coverage, but no regression proving inline whitespace survives embedded local/fallback dispatch. (src/commands/agent-via-gateway.test.ts:311, cd05d4a0224e)

Likely related people:

  • vincentkoc: Current blame in the shallow checkout points the central agent CLI dispatch and embedded command lines to this author, and the live PR discussion shows this person initiated the automerge path. (role: recent area contributor and reviewer; confidence: high; commits: 35d7cb0bffe7, 7e8364f6d58c; files: src/commands/agent-via-gateway.ts, src/agents/agent-command.ts)
  • steipete: GitHub path history shows repeated agent CLI, command registration, and agent runtime work around the affected entry point and embedded dispatch boundary. (role: feature-history owner; confidence: high; commits: 32c0279cec80, 6fb1f386c6d6, 6c113837b88c; files: src/commands/agent-via-gateway.ts, src/cli/program/register.agent-turn.ts, src/agents/agent-command.ts)
  • Alix-007: This author introduced the recent CLI /compact rejection behavior that the PR extends to file-backed message input. (role: adjacent invariant introducer; confidence: medium; commits: e35e5f123dda; files: src/commands/agent-via-gateway.ts, src/commands/agent-via-gateway.test.ts)
What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics.

How this review workflow works
  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. P3 Low-priority cleanup, docs, polish, ergonomics, or speculative work. labels Jun 15, 2026
@vincentkoc

Copy link
Copy Markdown
Member

/clownfish automerge

@openclaw-clownfish openclaw-clownfish Bot added clownfish:automerge Maintainer opted this Clownfish PR into bounded ClawSweeper-reviewed automerge clawsweeper:automerge Maintainer opted this PR into bounded ClawSweeper-reviewed automerge labels Jun 19, 2026
@openclaw-clownfish

Copy link
Copy Markdown
Contributor

Clownfish is on the reef for this PR. 🐠

I tagged clownfish:automerge and sent ClawSweeper over this exact head. If the sweep finds rough coral, failing checks, or needs-human, I will take another bounded repair lap and ask for a fresh review.

A maintainer can call /clownfish stop any time and I will drift this back to human review.

@clawsweeper clawsweeper Bot added status: 🚀 automerge armed This PR is in ClawSweeper's automerge lane. clawsweeper:human-review Needs maintainer review before ClawSweeper can continue and removed status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. labels Jun 19, 2026
@clawsweeper

clawsweeper Bot commented Jun 19, 2026

Copy link
Copy Markdown
Contributor

🦞✅
ClawSweeper is pausing this repair loop for human review.

Source: clawsweeper[bot]
Reason: - [P2] No repair lane is needed; there are no actionable review findings and the exact head is already in the automerge/normal merge gate path.; Cleared: The diff reads only an explicit caller-supplied local path and changes no dependencies, workflows, credentials, auth, or network behavior. (sha=7614ed4e36c2bcea574eb73faf4214df4506c8e3)

Why human review is needed:
This item has security-sensitive risk. ClawSweeper is pausing instead of making an autonomous change that could affect trust, credentials, permissions, or exposure.

What the maintainer can do as a next step:
If the maintainer accepts the current risk and wants ClawSweeper to continue merge gates, comment @clawsweeper approve. If the security-sensitive detail still needs changes, describe the safe path or push the fix, then comment @clawsweeper automerge. If the risk should not be automated, keep the PR paused for manual review or comment @clawsweeper stop.

I added clawsweeper:human-review and left the final call with a maintainer.

@clawsweeper clawsweeper Bot added rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. and removed rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. labels Jun 20, 2026
@vincentkoc

Copy link
Copy Markdown
Member

Clownfish 🐠 reef automerge status

This repair lap finished without changing the PR. Clownfish checked the reef and found no safe patch to push this time.

Target: #93351
Executor outcome: fix artifact is too broad for autonomous execution; split into narrower jobs or explicitly set CLOWNFISH_ALLOW_BROAD_FIX_ARTIFACTS=1.
Worker summary: PR #93351 is the canonical automerge repair target. It is a useful, narrow contributor PR for openclaw agent --message-file, but it is not merge-ready because the hydrated preflight reports a dirty merge state and a fresh ClawSweeper review with issues before merge. The branch is maintainer-editable, so the safe path is to repair the contributor branch rather than replace it. Linked #79182/#79200 are a related but separate openclaw message send --message-file family and should stay open/out of this automerge cluster.

Worker actions:

  • fix_needed on #93351: planned - Repair the maintainer-editable contributor branch because it is the canonical automerge PR but is dirty and has actionable ClawSweeper merge-readiness work.
  • build_fix_artifact on cluster:automerge-openclaw-openclaw-93351: planned - Build an executable repair artifact for the existing contributor branch rather than opening a replacement PR.
  • keep_related on #79182: planned - Same message-file ergonomics family, but not the same root cause or command surface as feat(cli): add --message-file to openclaw agent #93351.
  • keep_related on #79200: planned - Related sibling feature surface, not a duplicate or candidate fix for feat(cli): add --message-file to openclaw agent #93351.

No push, rebase, replacement PR, merge, or ClawSweeper re-review happened this swim.

fish notes: model gpt-5.5, reasoning medium.

@ooiuuii
ooiuuii force-pushed the fix/agent-message-file branch from 7614ed4 to 8f19b3b Compare June 20, 2026 15:51
@ooiuuii

ooiuuii commented Jun 20, 2026

Copy link
Copy Markdown
Contributor Author

Thanks, Vincent. Rebased this on current main and pushed the follow-up ClawSweeper was worried about: --message-file now resolves into the same message path as inline --message, so /compact is rejected before Gateway or embedded dispatch.

I added the file-backed /compact regression too. Focused local checks passed here: git diff --check origin/main...HEAD, the agent message-file/compact tests, the UTF-8/mutual-exclusion tests, and the CLI parser forwarding test.

@clawsweeper clawsweeper Bot removed proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. labels Jun 20, 2026
@clawsweeper

clawsweeper Bot commented Jun 20, 2026

Copy link
Copy Markdown
Contributor

🦞✅
ClawSweeper is pausing this repair loop for human review.

Source: clawsweeper[bot]
Reason: - [P2] Human handling remains because there is no narrow repair finding, but exact-head checks and the human-review pause still gate merge.; Cleared: No concrete security or supply-chain regression found; the diff reads only an explicit caller-supplied local file and changes no dependencies, workflows, credentials, auth, or network behavior. (sha=8f19b3bb94b5608f9043399727dbd2f19f545f50)

Why human review is needed:
This item has security-sensitive risk. ClawSweeper is pausing instead of making an autonomous change that could affect trust, credentials, permissions, or exposure.

What the maintainer can do as a next step:
If the maintainer accepts the current risk and wants ClawSweeper to continue merge gates, comment @clawsweeper approve. If the security-sensitive detail still needs changes, describe the safe path or push the fix, then comment @clawsweeper automerge. If the risk should not be automated, keep the PR paused for manual review or comment @clawsweeper stop.

I added clawsweeper:human-review and left the final call with a maintainer.

@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. P2 Normal backlog priority with limited blast radius. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. and removed merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. P3 Low-priority cleanup, docs, polish, ergonomics, or speculative work. labels Jun 20, 2026
@ooiuuii
ooiuuii force-pushed the fix/agent-message-file branch from 8f19b3b to cd05d4a Compare June 21, 2026 09:04
@vincentkoc

Copy link
Copy Markdown
Member

Clownfish 🐠 reef automerge status

This repair lap finished without changing the PR. Clownfish checked the reef and found no safe patch to push this time.

Target: #93351
Executor outcome: no planned fix actions.
Worker summary: Current main is at the preflight SHA and still has only required inline --message for openclaw agent; no --message-file or stdin flag is present. The hydrated PR #93351 remains the canonical implementation path, but deterministic validation blocks executable repair because the canonical repair target carries merge-risk: 🚨 compatibility. This result therefore keeps non-mutating classifications and escalates only the blocked repair decision for human handling.

Worker actions:

  • needs_human on #93351: blocked - Human handling is required before Clownfish can repair the canonical contributor branch because the exact executable repair target is blocked by the compatibility merge-risk label.
  • keep_related on #79182: planned - Related message-file ergonomics family, but a different command and canonical path.
  • keep_related on #79200: planned - Related but separate candidate for the message-send command family.
  • keep_related on #94423: planned - Related overlapping PR, but not the canonical automerge branch and not suitable for this bounded repair loop.
  • needs_human on cluster:automerge-openclaw-openclaw-93351: blocked - No complete executable fix artifact is safe under the validator's blocked-label rule.

Nothing moved downstream from this pass: no branch update, replacement PR, merge, or re-review.

fish notes: model gpt-5.5, reasoning medium.

@vincentkoc

Copy link
Copy Markdown
Member

Clownfish 🐠 reef automerge status

This repair lap finished without changing the PR. Clownfish checked the reef and found no safe patch to push this time.

Target: #93351
Executor outcome: fix artifact is too broad for autonomous execution; split into narrower jobs or explicitly set CLOWNFISH_ALLOW_BROAD_FIX_ARTIFACTS=1.
Worker summary: PR #93351 is the canonical automerge repair target for openclaw agent --message-file. Current main at 5dc6e0e still requires inline --message and has no message-file/message-stdin symbols. The PR branch is maintainer-editable, but the hydrated artifact shows failing exact-head checks and a ClawSweeper human-review pause, so the safe autonomous result is an executable repair artifact for the contributor branch, not merge or closure. Linked #79182/#79200 are the separate openclaw message send --message-file family; #94423 is a broader related agent input PR with stdin plus file input and failing proof.

Worker actions:

  • fix_needed on #93351: planned - Repair the maintainer-editable canonical contributor branch to clear failing exact-head checks and review-gate blockers before any later ClawSweeper merge gate.
  • build_fix_artifact on cluster:automerge-openclaw-openclaw-93351: planned - Build a repair-contributor-branch artifact so the executor can fetch the PR branch, inspect failed check logs, fix the smallest current-head issue, run review/validation, and request a fresh ClawSweeper gate.
  • keep_related on #79182: planned - Related message-file ergonomics family, but not the same command or canonical repair target.
  • keep_related on #79200: planned - Related but separate command family with its own active candidate path.
  • keep_related on #94423: planned - Overlapping agent CLI input work, but broader scope and separate proof blockers.

Clownfish left the PR as-is: no push, no rebase, no replacement PR, no merge, and no fresh ClawSweeper pass.

fish notes: model gpt-5.5, reasoning medium.

@vincentkoc
vincentkoc force-pushed the fix/agent-message-file branch from cd05d4a to 62c330f Compare June 22, 2026 11:21
@vincentkoc

Copy link
Copy Markdown
Member

Clownfish 🐠 reef automerge status

No new branch changes from this lap. Clownfish kept the current tidy instead of splashing around.

Target: #93351
Executor outcome: Codex /review did not pass after 2 attempt(s): Blocked on one changed-surface regression. Security-sensitive issues appear absent in the reviewed diff, and the supplied validation command (pnpm check:changed) is sufficient for this surface, but inline --me.... Worker summary: PR #93351 is the canonical automerge repair target for the bounded openclaw agent --message-filework. Current main at f378de9d5ba9d5fc8637de7fe443d4dfbd516a0b still has required inline--messageonly, while the maintainer-editable PR branch has failing exact-head checks and a ClawSweeper human-review pause, so the executable path is to repair the contributor branch, not merge or close. #79182/#79200 are the separateopenclaw message send --message-file` family, and #94423 is related but broader agent input work with stdin plus file input; those related refs are not part of the executable repair artifact.

Worker actions:

  • fix_needed on #93351: planned - Repair the maintainer-editable contributor branch and rerun changed validation; do not merge or close from this worker.
  • build_fix_artifact on cluster:automerge-openclaw-openclaw-93351: planned - Create an executable repair artifact for the canonical PR branch only.
  • keep_related on #79182: planned - Related CLI ergonomics family, but different command surface and canonical path.
  • keep_related on #79200: planned - Separate command surface; keep out of this automerge repair cluster.
  • keep_related on #94423: planned - Related broader follow-up, not the narrow automerge repair target.

Nothing moved downstream from this pass: no branch update, replacement PR, merge, or re-review.

fish notes: model gpt-5.5, reasoning medium.

@vincentkoc
vincentkoc force-pushed the fix/agent-message-file branch from fffcde9 to 4897f2f Compare June 22, 2026 11:53
@vincentkoc
vincentkoc merged commit a0fedcf into openclaw:main Jun 22, 2026
93 checks passed
github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request Jun 23, 2026
Merges the Clownfish-repaired contributor branch for openclaw#93351. The latest repair preserves inline --message whitespace, adds --message-file coverage for gateway and local embedded runs, and the PR is clean/mergeable on head 4897f2f.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

clawsweeper:automerge Maintainer opted this PR into bounded ClawSweeper-reviewed automerge clawsweeper:human-review Needs maintainer review before ClawSweeper can continue cli CLI command changes clownfish:automerge Maintainer opted this Clownfish PR into bounded ClawSweeper-reviewed automerge commands Command implementations docs Improvements or additions to documentation merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. P2 Normal backlog priority with limited blast radius. proof: sufficient ClawSweeper judged the real behavior proof convincing. proof: supplied External PR includes structured after-fix real behavior proof. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. size: M status: 🚀 automerge armed This PR is in ClawSweeper's automerge lane.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants