Skip to content

fix(cli-runner): drop volatile systemPromptHash from claude-cli live fingerprint#81047

Open
benjamin1492 wants to merge 1 commit into
openclaw:mainfrom
benjamin1492:fix/cli-fingerprint-drop-volatile-system-prompt
Open

fix(cli-runner): drop volatile systemPromptHash from claude-cli live fingerprint#81047
benjamin1492 wants to merge 1 commit into
openclaw:mainfrom
benjamin1492:fix/cli-fingerprint-drop-volatile-system-prompt

Conversation

@benjamin1492

@benjamin1492 benjamin1492 commented May 12, 2026

Copy link
Copy Markdown
Contributor

Summary

Closes #81041.

The buildClaudeLiveFingerprint helper in src/agents/cli-runner/claude-live-session.ts hashes context.systemPrompt as one of the keys deciding whether the active claude-cli subprocess is still valid. On chat channels (Telegram, Discord, Slack, iMessage, Signal, WhatsApp, etc.) OpenClaw injects per-turn-volatile content into that same systemPrompt — inbound metadata ([Tue 2026-05-12 09:33 EDT], message id, sender envelope), heartbeat poll text, channel guidance, runtime status banner. Every inbound turn produces a fresh hash, the fingerprint diverges, and the live session is torn down and rebuilt. The new subprocess has no memory of the prior turn, so the agent looks amnesiac to the user (e.g. references its own last message and gets "what are you talking about?").

extraSystemPromptHash already covers the static side of the system prompt (the agent's persona, SOUL.md, USER.md, AGENTS.md, etc.) via extraSystemPromptStatic — see prepare.ts:151. So removing the volatile systemPromptHash field doesn't weaken the integrity check; it just stops the fingerprint from rejecting valid live sessions on every turn.

Diff

-    systemPromptHash: sha256(params.context.systemPrompt),

The helper is also exported so the new unit test can exercise it directly (matches the pattern of resetClaudeLiveSessionsForTest already in the same module).

Test plan

New file src/agents/cli-runner/claude-live-session.fingerprint.test.ts covers:

  1. Two builds with different context.systemPrompt (per-turn volatile content) but everything else identical → fingerprints equal. This is the regression.
  2. Changing context.extraSystemPromptHash → fingerprints differ. Proves the static-config integrity check is still in force.
  3. Changing context.normalizedModel → fingerprints differ. Proves model swaps still rotate the session.
  4. Changing context.workspaceDir → fingerprints differ. Proves workspace identity still gates reuse.
pnpm test src/agents/cli-runner/claude-live-session.fingerprint.test.ts
 Test Files  1 passed (1)
      Tests  4 passed (4)

pnpm tsgo and pnpm check:test-types both pass.

Affected scope

  • claude-cli backend only. API backends (Anthropic Messages, OpenAI, OpenRouter, Vertex, Bedrock) do not maintain a fingerprinted persistent process and so are unaffected.
  • Multi-turn chat channels with per-turn metadata injection are the primary beneficiaries; one-shot CLI runs (openclaw run) don't expose the multi-turn symptom but are also covered.

Risk

The narrow theoretical risk is: if there exists a scenario where two distinct systemPrompt values intentionally need separate live sessions while sharing the same extraSystemPromptHash (and same model, workspace, auth, MCP, skills, argv, env), this change would let them share one subprocess. I searched the codebase for that case — systemPromptHash is referenced only at the one site removed here (no readers anywhere else in src/, extensions/, or test/), and extraSystemPromptHash is purpose-built (see prepare.ts:148-154) to capture the static portion of the system prompt while excluding per-message metadata, which is exactly the dimension callers need to fingerprint on. I believe no such scenario exists. If reviewers know of one I missed, please flag it.

No public API change (the helper was previously private; exporting it for tests is the only signature delta and is internal-only).


Real Behavior Proof

Behavior or issue addressed: Closes #81041. On the claude-cli backend with chat channels (Telegram/Discord/etc.), buildClaudeLiveFingerprint was hashing the entire system prompt including OpenClaw's per-turn-volatile metadata block (timestamps, inbound envelope, heartbeat text, channel guidance). Every turn produced a different hash, so the runtime decided the live CLI subprocess no longer matched the requested session and rotated to a fresh subprocess — losing all cross-turn context.

Real environment tested: Live OpenClaw 2026.5.7 install on Ubuntu 24.04 (Linux 6.17.0-23-generic x86_64), Node v22.22.0, claude-cli backend (Claude Max subscription), Telegram bot channel. Same change as proposed in this PR was first applied as a runtime patch to the bundled dist/claude-live-session-C0vmXU_W.js so the comparison was made against actual runtime behavior, not staged simulations.

Exact steps or command run after this patch:

  1. Apply the one-line removal directly to the bundled buildClaudeLiveFingerprint (matches this PR's diff verbatim — systemPromptHash field removed from the returned object).
  2. systemctl --user restart openclaw-gateway
  3. Resume normal Telegram chat use with the agent (Leonard) for ~75 minutes spanning ~30 turns of multi-step work (issue triage, fork/clone via gh CLI, GitHub API calls, drafting this PR description). Mix of short turns and long turns including some with multi-minute gaps.
  4. After the patch window, query the gateway journal for any cli/live-session restart events:
journalctl --user -u openclaw-gateway --since "2026-05-12 09:11" \
  | grep -E "(cli-backend|claude-live|live session)" \
  | grep -E "reset|close|restart|rotate|reason="

Evidence after fix: Redacted live runtime journal output, captured from journalctl --user -u openclaw-gateway on the actual install.

Pre-patch window (08:00–09:11 EDT, fingerprint bug active) — every Telegram turn that included new metadata triggered a fingerprint divergence, with downstream session restarts visible as reason=missing-transcript (companion bug #81042) cascading into reason=restart:

2026-05-12T08:13:06.295-04:00 [agent/cli-backend] cli session reset: provider=claude-cli reason=missing-transcript
2026-05-12T08:13:06.327-04:00 [agent/cli-backend] claude live session close: provider=claude-cli model=claude-opus-4-7 reason=restart
2026-05-12T08:45:08.710-04:00 [agent/cli-backend] cli session reset: provider=claude-cli reason=missing-transcript
2026-05-12T08:46:26.340-04:00 [agent/cli-backend] claude live session close: provider=claude-cli model=claude-opus-4-7 reason=restart
2026-05-12T08:51:32.073-04:00 [agent/cli-backend] cli session reset: provider=claude-cli reason=missing-transcript
2026-05-12T08:51:32.099-04:00 [agent/cli-backend] claude live session close: provider=claude-cli model=claude-opus-4-7 reason=restart

Post-patch window (09:11+ EDT, this PR's change live in the bundle) — full output of the same journal query:

$ journalctl --user -u openclaw-gateway --since "2026-05-12 09:11" \
    | grep -E "(cli-backend|claude-live|live session)" \
    | grep -E "reset|close|restart|rotate|reason="
(no matches)

User-visible Telegram conversation excerpt confirming the symptom pre-patch (agent forgetting its own message from 6 minutes earlier in the same thread):

[8:39 AM] Leonard: Watcher is armed — I'll page you as soon as the sentinel appears.
[8:44 AM] User:    still working on it?
[8:45 AM] Leonard: Nothing's actively in flight on my side… What's "it" referring to?

The 8:45 turn corresponds 1:1 with the 08:45:08 reason=missing-transcript log line above.

Live Telegram screenshot from the affected install, captured pre-patch on 2026-05-12. The user asks "still working on it?" 5 minutes after the agent's earlier reply describing in-flight work; the agent denies anything is in flight and asks "What's 'it' referring to?". The user's next message quote-backs the agent's own prior message (with a hand-drawn arrow connecting the two). Two unrelated project names in the parenthetical have been redacted; the bug demonstration is not affected. This is the user-visible symptom of the runtime events shown in the journal log above.

Telegram screenshot showing claude-cli context loss between turns

Observed result after fix: Zero fingerprint-driven session restarts in the post-patch window. Cross-turn context is retained across multi-minute gaps in the same Telegram conversation. The agent now references its own messages from 5+ minutes earlier without losing the thread. This very PR description was drafted across multiple Telegram turns spanning >30 minutes, with all cross-turn references intact.

What was not tested: Other chat surfaces (Discord, Slack, iMessage, Signal, WhatsApp) — the bug analysis predicts they're also affected because they inject similar per-turn metadata, but only Telegram was reproduced and verified on the live runtime here. API-backend providers (Anthropic Messages, OpenAI, OpenRouter) were not tested because they don't go through buildClaudeLiveFingerprint.

@openclaw-barnacle openclaw-barnacle Bot added agents Agent runtime and tooling size: S triage: needs-real-behavior-proof Candidate: external PR needs after-fix proof from a real setup. labels May 12, 2026
@clawsweeper

clawsweeper Bot commented May 12, 2026

Copy link
Copy Markdown
Contributor

Codex review: found issues before merge. Reviewed July 3, 2026, 11:49 PM ET / 03:49 UTC.

Summary
The PR removes systemPromptHash from the Claude CLI live-session fingerprint, exports the fingerprint helper for tests, and adds a focused fingerprint regression test.

PR surface: Source -1, Tests +119. Total +118 across 2 files.

Reproducibility: yes. at source level: current main hashes the full delivered systemPrompt, chat-channel prompt assembly can vary that prompt between turns, and a fingerprint mismatch closes the live Claude process. The PR body also supplies live patched-install logs, but I did not run a fresh live Telegram or Discord reproduction in this read-only review.

Review metrics: 1 noteworthy metric.

  • Live-session reuse keys: 1 removed, 0 added. The diff removes the delivered-system-prompt input from warm-process identity, so maintainers need to review the replacement session-state boundary before merge.

Root-cause cluster
Relationship: fixed_by_candidate
Canonical: #81041
Summary: This PR is the active candidate fix for the canonical full systemPromptHash Claude live-fingerprint bug; nearby items cover overlapping but distinct false-invalidation or transcript-binding triggers.

Members:

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

Merge readiness
Overall: 🧂 unranked krab
Proof: 🦞 diamond lobster
Patch quality: 🧂 unranked krab
Result: blocked by patch quality or review findings.

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

Rank-up moves:

  • Preserve stable prompt invalidation while excluding only per-turn volatile metadata.
  • [P2] Add hadSessionFile and contextEngineConfig to the test fixture.
  • Rerun focused validation, including node scripts/run-vitest.mjs src/agents/cli-runner/claude-live-session.fingerprint.test.ts and pnpm check:test-types.

Mantis proof suggestion
Independent Telegram Desktop proof would show whether context survives adjacent turns while Claude live-session restart logs stay quiet. A maintainer can ask Mantis to capture proof by posting this exact PR comment:

@openclaw-mantis telegram desktop proof: verify claude-cli keeps context across two Telegram turns with changing per-turn metadata and include restart-log evidence.

Risk before merge

  • [P1] Removing the delivered-system-prompt fingerprint can let an existing Claude live process continue across stable instruction, skill, tooling, or project-context changes that are not represented by extraSystemPromptHash.
  • [P1] The added test fixture is stale against current PreparedCliRunContext, so test-type validation can fail until hadSessionFile and contextEngineConfig are added.

Maintainer options:

  1. Preserve Stable Prompt Invalidation (recommended)
    Keep the volatile-metadata fix, but replace the deleted full prompt key with a stable prompt-content fingerprint or equivalent guard before merge.
  2. Accept Warm-Process Staleness Explicitly
    Maintainers may choose to reuse Claude warm processes across stable prompt changes, but that should be an explicit owner decision with tests documenting the new behavior.
  3. Pause For Broader False-Invalidation Scope
    Pause this branch if maintainers want one coordinated fix for the related extraSystemPromptHash and live-fingerprint false-invalidation family before landing a partial boundary change.

Next step before merge

  • [P2] Manual review is needed because the remaining blocker is the stable-versus-volatile prompt identity decision, not only a narrow mechanical repair.

Security
Cleared: The diff only changes Claude CLI live-session TypeScript and a colocated Vitest test; it does not touch dependencies, workflows, secrets, package metadata, or executable supply-chain surfaces.

Review findings

  • [P1] Preserve stable prompt invalidation — src/agents/cli-runner/claude-live-session.ts:326
  • [P2] Add current context fields to the fixture — src/agents/cli-runner/claude-live-session.fingerprint.test.ts:22-52
Review details

Best possible solution:

Exclude volatile per-turn prompt bytes while preserving a stable prompt-content reuse guard, then refresh the fixture and focused validation against current main.

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

Yes, at source level: current main hashes the full delivered systemPrompt, chat-channel prompt assembly can vary that prompt between turns, and a fingerprint mismatch closes the live Claude process. The PR body also supplies live patched-install logs, but I did not run a fresh live Telegram or Discord reproduction in this read-only review.

Is this the best way to solve the issue?

No as submitted. Removing volatile prompt bytes is the right direction, but deleting the whole full-prompt hash is too broad unless stable prompt changes still invalidate or refresh the warm process.

Full review comments:

  • [P1] Preserve stable prompt invalidation — src/agents/cli-runner/claude-live-session.ts:326
    After deleting this key, the fingerprint no longer changes when stable parts of the delivered system prompt outside extraSystemPromptHash change. Reused Claude live sessions are spawned once and later turns only write user input over stdin, so stable instruction or context changes can stay stale until the process closes; replace this with a stable prompt fingerprint instead of removing the axis outright.
    Confidence: 0.9
  • [P2] Add current context fields to the fixture — src/agents/cli-runner/claude-live-session.fingerprint.test.ts:22-52
    buildContext returns PreparedCliRunContext, but current main requires hadSessionFile and contextEngineConfig. Add those fixture values so focused tests and check-test-types validate the PR against the current type contract.
    Confidence: 0.96

Overall correctness: patch is incorrect
Overall confidence: 0.9

AGENTS.md: found and applied where relevant.

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

Label changes

Label changes:

  • add rating: 🧂 unranked krab: Overall readiness is 🧂 unranked krab; proof is 🦞 diamond lobster and patch quality is 🧂 unranked krab.
  • remove rating: 🦪 silver shellfish: Current PR rating is rating: 🧂 unranked krab, so this older rating label is no longer current.

Label justifications:

  • P1: The PR targets a real Claude CLI chat context-loss regression that can break multi-turn messaging workflows for users.
  • merge-risk: 🚨 compatibility: Removing a live-session fingerprint axis changes when existing Claude CLI warm processes are reused after prompt-context changes.
  • merge-risk: 🚨 session-state: The diff changes the boundary that decides whether cross-turn Claude CLI process state is preserved or restarted.
  • rating: 🧂 unranked krab: Overall readiness is 🧂 unranked krab; proof is 🦞 diamond lobster and patch quality is 🧂 unranked krab.
  • status: ⏳ waiting on author: ClawSweeper has contributor-facing work open and is waiting for author action. Sufficient (logs): The PR body includes after-fix live runtime proof from a patched OpenClaw install, with redacted journal output showing pre-patch resets and no matching reset events after the runtime patch; the Telegram screenshot supports the pre-patch symptom.
  • proof: sufficient: Contributor real behavior proof is sufficient. The PR body includes after-fix live runtime proof from a patched OpenClaw install, with redacted journal output showing pre-patch resets and no matching reset events after the runtime patch; the Telegram screenshot supports the pre-patch symptom.
  • mantis: telegram-visible-proof: Mantis should capture Telegram visible proof. The change affects visible Telegram chat context continuity and can be demonstrated in a short Telegram Desktop recording with restart-log evidence.
Evidence reviewed

PR surface:

Source -1, Tests +119. Total +118 across 2 files.

View PR surface stats
Area Files Added Removed Net
Source 1 1 2 -1
Tests 1 119 0 +119
Docs 0 0 0 0
Config 0 0 0 0
Generated 0 0 0 0
Other 0 0 0 0
Total 2 120 2 +118

What I checked:

Likely related people:

  • obviyus: GitHub path history shows repeated recent work on Claude live-session behavior and CLI preparation, plus the earlier fix: keep claude cli sessions warm commit in the session reuse path. (role: recent area contributor and likely feature owner; confidence: high; commits: 81ca7bc40b09, 11441aefbe01, 52cabf877d50; files: src/agents/cli-runner/claude-live-session.ts, src/agents/cli-runner/prepare.ts, src/agents/cli-session.ts)
  • vincentkoc: Recent path history touches CLI message delivery evidence, canonical object guard reuse, and release-era carry-forward on the same Claude live-session and preparation files. (role: recent adjacent contributor; confidence: medium; commits: 0ea08076c3b5, 9122e762d8f5, e085fa1a3ffd; files: src/agents/cli-runner/claude-live-session.ts, src/agents/cli-runner/prepare.ts, src/agents/cli-session.ts)
  • steipete: History shows earlier CLI session preservation and runner pipeline refactors around the same session binding and preparation surfaces. (role: adjacent CLI session contributor; confidence: medium; commits: 12100719b8a9, 48ae97633303, 25f16f8fe6c9; files: src/agents/cli-session.ts, src/agents/cli-runner/prepare.ts)
  • wangwllu: Recent history scoped the Claude CLI queue to live-session owner identity, adjacent to the live-session reuse key involved here. (role: adjacent live-session owner-key contributor; confidence: medium; commits: 43b108896219; files: src/agents/cli-runner/claude-live-session.ts, src/agents/cli-runner/helpers.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 the mantis: telegram-visible-proof Mantis should capture Telegram visible proof. label May 12, 2026
@openclaw-barnacle openclaw-barnacle Bot added proof: supplied External PR includes structured after-fix real behavior proof. and removed triage: needs-real-behavior-proof Candidate: external PR needs after-fix proof from a real setup. labels May 12, 2026
@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 12, 2026
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 12, 2026
@benjamin1492
benjamin1492 marked this pull request as ready for review May 12, 2026 15:08
@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 12, 2026
@openclaw-barnacle

Copy link
Copy Markdown

This pull request has been automatically marked as stale due to inactivity.
Please add updates or it will be closed.

@openclaw-barnacle openclaw-barnacle Bot added the stale Marked as stale due to inactivity label May 27, 2026
@clawsweeper clawsweeper Bot added rating: 🌊 off-meta tidepool PR readiness rating does not apply to this item. and removed proof: sufficient ClawSweeper judged the real behavior proof convincing. mantis: telegram-visible-proof Mantis should capture Telegram visible proof. labels May 27, 2026
@clawsweeper

clawsweeper Bot commented May 27, 2026

Copy link
Copy Markdown
Contributor

ClawSweeper PR egg: 🔥 warming; proof passed, review follow-up or readiness checks remain. Hatch with @clawsweeper hatch when eligible.

Rules and details

Hatchability:

  • Merged PRs are hatchable.
  • Open PRs are hatchable when they are status: 👀 ready for maintainer look, status: 🚀 automerge armed, or labeled clawsweeper:automerge.
  • Closed unmerged PRs are hatchable only when one of those hatchable labels is still present in the durable record.

About:

  • Eggs appear after real-behavior proof passes. They are collectible flavor only.
  • Review momentum changes the shell state: follow-up work warms it, re-review makes it wobble, and a clean final review lets it hatch.
  • The hatch is seeded from this repository and PR number, so the same PR keeps the same creature; the reviewed head SHA can only change safe visual details.
  • Rarity is just collectible sparkle: 🥚 common, 🌱 uncommon, 💎 rare, ✨ glimmer, and 🌈 legendary.

@openclaw-barnacle openclaw-barnacle Bot removed the stale Marked as stale due to inactivity label May 28, 2026
@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. mantis: telegram-visible-proof Mantis should capture Telegram visible proof. P1 High-priority user-facing bug, regression, or broken workflow. merge-risk: 🚨 session-state 🚨 May lose, corrupt, stale, or mis-associate session, agent, or context state. and removed rating: 🌊 off-meta tidepool PR readiness rating does not apply to this item. labels May 28, 2026
@RomneyDa

Copy link
Copy Markdown
Member

Heads up: this PR needs to be updated against current main before the new required Dependency Guard check can pass.

@benjamin1492
benjamin1492 force-pushed the fix/cli-fingerprint-drop-volatile-system-prompt branch from 79ddc27 to 9daea40 Compare May 29, 2026 16:13
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 29, 2026
@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. and removed rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. labels May 29, 2026
@clawsweeper clawsweeper Bot added rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. and removed rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. labels Jun 30, 2026
@clawsweeper clawsweeper Bot added rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. and removed rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. labels Jul 4, 2026
@openclaw-barnacle

Copy link
Copy Markdown

This pull request has been automatically marked as stale due to inactivity.
Please add updates or it will be closed.

@openclaw-barnacle openclaw-barnacle Bot added the stale Marked as stale due to inactivity label Jul 19, 2026
@clawsweeper

clawsweeper Bot commented Jul 19, 2026

Copy link
Copy Markdown
Contributor

ClawSweeper status: review started.

I am starting a fresh review of this pull request: fix(cli-runner): drop volatile systemPromptHash from claude-cli live fingerprint This is item 1/1 in the current shard. Shard 11/20.

This placeholder means the worker is alive and reading the current context. I will edit this same comment with the actual review when the claws are done clicking.

Crustacean status: shell secured, claws on keyboard, evidence pebbles being sorted.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agents Agent runtime and tooling mantis: telegram-visible-proof Mantis should capture Telegram visible proof. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. merge-risk: 🚨 session-state 🚨 May lose, corrupt, stale, or mis-associate session, agent, or context state. P1 High-priority user-facing bug, regression, or broken workflow. proof: sufficient ClawSweeper judged the real behavior proof convincing. proof: supplied External PR includes structured after-fix real behavior proof. rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. size: S stale Marked as stale due to inactivity status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: systemPromptHash in buildClaudeLiveFingerprint causes phantom claude-cli session restarts on every turn for chat channels

2 participants