fix(cli): hide synthetic Claude reseed prompts#99653
Conversation
|
Codex review: needs maintainer review before merge. Reviewed July 4, 2026, 1:53 AM ET / 05:53 UTC. Summary PR surface: Source +406, Tests +1516. Total +1922 across 34 files. Reproducibility: yes. at source level: current main imports Claude CLI user transcript rows unchanged, and the linked issue shows the exact wrapper row plus screenshot evidence. I did not run a live Claude CLI/iOS reload path in this read-only review. Review metrics: 1 noteworthy metric.
Stored data model Root-cause cluster Members:
Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything. Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Risk before merge
Maintainer options:
Next step before merge
Security Review detailsBest possible solution: Land the receipt-backed importer fix after exact-head checks and maintainer acceptance of the session-state receipt behavior; keep adjacent Claude synthetic-placeholder lifecycle work separate. Do we have a high-confidence way to reproduce the issue? Yes at source level: current main imports Claude CLI user transcript rows unchanged, and the linked issue shows the exact wrapper row plus screenshot evidence. I did not run a live Claude CLI/iOS reload path in this read-only review. Is this the best way to solve the issue? Yes, with maintainer acceptance of the new receipt contract: the importer boundary fixes all history clients, while the receipt avoids hiding arbitrary transformed user rows without proof. A regex-only importer filter would be narrower but less safe for transformed prompts, images, retries, and reset ownership. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against 1b84316a91dc. Label changesLabel changes:
Label justifications:
Evidence reviewedPR surface: Source +406, Tests +1516. Total +1922 across 34 files. View PR surface stats
What I checked:
Likely related people:
What the crustacean ranks mean
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
|
|
I did an extra non-maintainer source review of this as the current #99646 candidate. Best-fix read: this is the right boundary. I also checked the duplicate/adjacent set: #99651 is closed and superseded; #90789 and #99131 are adjacent Claude placeholder lifecycle issues, not required for this narrow wrapper leak. The PR preserves imported external id/session metadata via Focused proof on head No additional blocker found. Minor optional hardening: one regression could construct the wrapper with CI note: I also checked the current failing required check after posting. |
|
Merged via squash.
|
Fixes #99646
What Problem This Solves
Claude CLI reseeds can write OpenClaw's internal history wrapper into the native CLI transcript. The gateway later imported that synthetic row as an ordinary user message, exposing internal context in chat history.
An importer-only regex fix is unsafe: it cannot prove that the canonical user turn was persisted, and prompt transforms, retries, fallback, images, or session resets can change the row shape.
Why This Change Was Made
The repair carries durable proof across the full CLI lifecycle:
persistedoromitteddisposition;Legacy reseed envelopes remain parser-only migration input. Normal runtime paths use the receipt.
User Impact
Users keep the authoritative OpenClaw user turn, while the internal Claude CLI reseed copy no longer appears in visible history or fallback context. Images and unrelated native content remain intact.
Evidence
a2dcd01c326401c37d40bfc686e6726c7abdc2471b84316a91dc32ce57fcd3f8b457f6de80f73dd3git diff --checkpassedtbx_01kwnsexns78ccvbg687mrj1yb:pnpm check:changedpassed for core and core-testspnpm buildpassed