Skip to content

fix(codex): gate CLI session resume behind plugin approval#82906

Closed
LaPhilosophie wants to merge 6 commits into
openclaw:mainfrom
LaPhilosophie:codex-resume-approval
Closed

fix(codex): gate CLI session resume behind plugin approval#82906
LaPhilosophie wants to merge 6 commits into
openclaw:mainfrom
LaPhilosophie:codex-resume-approval

Conversation

@LaPhilosophie

@LaPhilosophie LaPhilosophie commented May 17, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Problem: codex.cli.session.resume did not consistently pass through plugin approval before node dispatch.
  • Solution: require a restricted plugin approval for resume, limited to allow-once and deny.
  • What changed: the resume policy now requests approval before ctx.invokeNode(), uses the standard plugin approval timeout instead of the longer node resume timeout, fails closed when approval delivery is unavailable or denied, and the Control UI renders only the decisions allowed by the approval request.
  • What did NOT change (scope boundary): session listing, node-host resume implementation, and Codex CLI spawn behavior are unchanged.

Change Type

  • Bug fix
  • Feature
  • Refactor required for the fix
  • Docs
  • Security hardening
  • Chore/infra

Scope

  • Gateway / orchestration
  • Skills / tool execution
  • Auth / tokens
  • Memory / storage
  • Integrations
  • API / contracts
  • UI / DX
  • CI/CD / infra

Linked Issue/PR

  • Closes: N/A
  • Related: N/A
  • This PR fixes a bug or regression

Motivation

codex.cli.session.resume can resume an existing local Codex CLI session with a caller-supplied prompt. Since this is a dangerous node-host command, the Gateway policy should require an explicit operator decision before forwarding the request to the node.

Real behavior proof (required for external PRs)

  • Behavior or issue addressed: Codex CLI session resume now requires plugin approval before node dispatch, and the Control UI shows only the decisions permitted for this approval.
  • Real environment tested: macOS local checkout, branch codex-resume-approval, head 713c83eba2ce.
  • Exact steps or command run after this patch: node --import tsx .artifacts/codex-resume-real-behavior-proof.ts; node .artifacts/codex-resume-control-ui-proof.mjs; targeted Vitest and oxfmt --check on touched files.
  • Evidence after fix (screenshot, recording, terminal capture, console output, redacted runtime log, linked artifact, or copied live output): copied redacted runtime logs from a live local Gateway + paired node run and from a real Control UI bundle opened in Google Chrome:
[gateway] http server listening (10 plugins: acpx, bonjour, browser, canvas, codex, device-pair, file-transfer, memory-core, phone-control, talk-voice)
[proof ...] approval runtime client connected
[proof ...] operator invoke client connected
[proof ...] starting headless node host codex-proof-node-...
[gateway] device pairing auto-approved device=<node-device-id> role=node
[proof ...] approved node pairing request ... commands=["system.run.prepare","system.run","system.which","browser.proxy","codex.cli.session.resume","codex.cli.sessions.list"]
[proof ...] node connected: nodeId=<node-device-id> commands include codex.cli.session.resume after node-pair approval
[proof ...] non-dangerous list invoke succeeded: sessionCount=1 payloadJSON=present
[proof ...] plugin approval requested: id=plugin:... title="Resume Codex CLI session" severity="critical" toolName="codex.cli.session.resume"
[proof ...] plugin approval resolved with deny: id=plugin:...
[proof ...] deny resume result error: {"name":"GatewayClientRequestError","gatewayCode":"INVALID_REQUEST","message":"Codex CLI session resume requires plugin approval.","details":{"approvalId":"plugin:...","decision":"deny","code":"PLUGIN_APPROVAL_REQUIRED"}}
[proof ...] plugin approval requested: id=plugin:... title="Resume Codex CLI session" severity="critical" toolName="codex.cli.session.resume"
[proof ...] plugin approval resolved with allow-once: id=plugin:...
[proof ...] allow-once resume result error: {"name":"GatewayClientRequestError","gatewayCode":"INVALID_REQUEST","message":"Error: Missing or invalid Codex CLI session id.","details":{"nodeError":{"code":"INVALID_REQUEST","message":"Error: Missing or invalid Codex CLI session id."},"code":"INVALID_REQUEST"}}
[proof ...] proof completed

[control-ui-proof ...] branch=codex-resume-approval head=713c83eba2ce
[control-ui-proof ...] loaded real Control UI bundle from http://127.0.0.1:5173/
[control-ui-proof ...] approval title="Resume Codex CLI session" toolName=codex.cli.session.resume
[control-ui-proof ...] rendered decision buttons=["Allow once","Deny"]
[control-ui-proof ...] always allow visible=false
[control-ui-proof ...] click Deny -> handleExecApprovalDecision calls=["deny"]
[control-ui-proof ...] rerendered decision buttons=["Allow once","Deny"]
[control-ui-proof ...] click Allow once -> handleExecApprovalDecision calls=["allow-once"]
[control-ui-proof ...] proof completed
  • Observed result after fix: codex.cli.sessions.list still dispatches without plugin approval; codex.cli.session.resume creates a plugin approval request before node dispatch; denied approval returns PLUGIN_APPROVAL_REQUIRED without dispatch; allow-once proceeds to the node handler; the resume approval uses the normal plugin approval timeout rather than the long node resume timeout; the Control UI renders only Allow once and Deny, with no Always allow button.
  • What was not tested: remote multi-device deployment and a successful live Codex model turn after resume. The allow path intentionally used an invalid session id so the proof could verify dispatch reaches the node handler without running a model turn.
  • Before evidence (optional but encouraged): before this change, the Codex resume node-invoke policy dispatched to the node without creating a plugin approval request.

Root Cause

  • Root cause: the Codex CLI resume node-invoke policy did not request plugin approval before dispatching to the node.
  • Missing detection / guardrail: there was no regression test covering approval behavior for this resume policy, and the Control UI approval prompt did not preserve plugin approval allowedDecisions.
  • Contributing context: session listing and session resume are registered together, but only resume needs approval gating.

Regression Test Plan

  • Coverage level that should have caught this:
    • Unit test
    • Seam / integration test
    • End-to-end test
    • Existing coverage already sufficient
  • Target test or file: extensions/codex/src/node-cli-sessions.test.ts, src/gateway/node-invoke-plugin-policy.test.ts, ui/src/ui/controllers/exec-approval.test.ts, ui/src/ui/views/exec-approval.test.ts, ui/src/ui/app-gateway.node.test.ts
  • Scenario the test should lock in: resume requires plugin approval, does not dispatch when approval delivery is unavailable or denied, does not pass the long node resume timeout into the approval request, forwards only after allow-once, and the Control UI renders only the decisions allowed by the plugin approval request.
  • Why this is the smallest reliable guardrail: the changed behavior is local to the Codex node-invoke policy, plugin approval request propagation, and the Control UI approval prompt.
  • Existing test that already covers this: none before this PR.
  • If no new test is added, why not: N/A

User-visible / Behavior Changes

Codex CLI session resume through this node command now requires plugin approval before dispatch. The approval prompt offers Allow once or Deny; it does not offer Always allow for this resume path.

Diagram

Before:
resume request -> node dispatch

After:
resume request -> plugin approval (allow-once / deny) -> node dispatch only after allow-once

Security Impact

  • New permissions/capabilities? No
  • Secrets/tokens handling changed? No
  • New/changed network calls? No
  • Command/tool execution surface changed? Yes — this narrows the resume execution path by requiring explicit plugin approval before node dispatch.
  • Data access scope changed? No
  • If any Yes, explain risk + mitigation: command dispatch is narrowed by a fail-closed approval gate.

Repro + Verification

Environment

  • OS: macOS
  • Runtime/container: local development checkout
  • Model/provider: N/A
  • Integration/channel: Codex extension
  • Relevant config: temporary local OpenClaw state/config, redacted in logs

Steps

  1. Run the live Gateway + paired node proof.
  2. Run the real Control UI decision-rendering proof.
  3. Run targeted regression tests and formatting checks.

Expected

  • Resume dispatch only happens after an allow-once plugin approval decision.
  • Denied approval and unavailable approval runtime do not dispatch to the node.
  • The Control UI shows only Allow once and Deny for the Codex resume approval.

Actual

  • Matches expected in the live Gateway proof, Control UI proof, and targeted regression tests.

Evidence

  • Failing test/log before + passing after
  • Trace/log snippets
  • Screenshot/recording
  • Perf numbers

Human Verification

  • Verified scenarios: deny blocks dispatch; unavailable approval runtime blocks dispatch; allow-once forwards to the node handler; Control UI renders only Allow once and Deny; Control UI click routing produces deny and allow-once.
  • Edge cases checked: approval runtime unavailable; duplicate/limited plugin approval decisions are normalized before broadcast; disallowed allow-always is not rendered by the Control UI.
  • What you did not verify: remote multi-device deployment and a successful live Codex model turn after resume.

Review Conversations

  • I replied to or resolved every bot review conversation I addressed in this PR.
  • I left unresolved only the conversations that still need reviewer or maintainer judgment.

Compatibility / Migration

  • Backward compatible? Mostly
  • Config/env changes? No
  • Migration needed? No
  • If yes, exact upgrade steps: N/A
  • Notes: existing automation that invokes codex.cli.session.resume may now need an approval-capable runtime or an explicit approval decision.

Risks and Mitigations

  • Risk: existing automation that resumes Codex CLI sessions may now stop for approval.
    • Mitigation: the change is limited to session resume; session listing and node-host resume behavior remain unchanged after approval.

Copilot AI review requested due to automatic review settings May 17, 2026 04:44
@openclaw-barnacle openclaw-barnacle Bot added extensions: codex size: S triage: needs-real-behavior-proof Candidate: external PR needs after-fix proof from a real setup. labels May 17, 2026
@clawsweeper

clawsweeper Bot commented May 17, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs maintainer review before merge. Reviewed June 30, 2026, 11:50 PM ET / 03:50 UTC.

Summary
The PR gates codex.cli.session.resume node dispatch behind a restricted plugin approval and propagates allowed approval decisions through the Gateway and Control UI.

PR surface: Source +66, Tests +243. Total +309 across 10 files.

Reproducibility: yes. from source inspection rather than a local live run. Current main and v2026.6.11 mark the Codex resume node command dangerous while forwarding it directly through ctx.invokeNode(), and sibling Codex source confirms resume accepts caller-provided prompt text for an existing session.

Review metrics: 2 noteworthy metrics.

  • Plugin node-invoke approval API surface: 1 optional field added. allowedDecisions extends the plugin-facing node-invoke approval request shape and should be treated as a plugin API contract decision.
  • Fail-closed dangerous node command: 1 command changed. codex.cli.session.resume moves from direct node dispatch to approval-required dispatch, which can change existing automation behavior.

Merge readiness
Overall: 🐚 platinum hermit
Proof: 🦞 diamond lobster
Patch quality: 🐚 platinum hermit
Result: ready for maintainer review.

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

Rank-up moves:

  • Resolve conflicts against current main while preserving the newer allowed-decision parser/view behavior.
  • [P1] Get maintainer acceptance for approval-required fail-closed resume behavior or add a trusted unattended route.

Risk before merge

  • [P1] Existing approval-less automation or unattended callers of codex.cli.session.resume can fail closed after merge unless an approval-capable runtime or operator route is available.
  • [P1] The PR head conflicts with current main; a refresh must preserve newer current-main approval decision parsing/rendering while adding the missing node-invoke approval propagation.
  • [P1] The PR adds an optional plugin node-invoke approval request field, so maintainers should accept that plugin API contract before merge.

Maintainer options:

  1. Refresh and accept approval-required resume (recommended)
    Resolve the conflicts and land the gate only if maintainers explicitly accept that resume callers now require an approval-capable runtime or operator decision.
  2. Add a trusted unattended route first
    Pause this PR if existing automation must continue resuming Codex sessions without an interactive plugin approval path.
  3. Defer the hardening
    Close or defer this branch if maintainers decide the compatibility and availability cost is not acceptable for this command.

Next step before merge

  • [P1] Maintainers need to decide the fail-closed compatibility tradeoff and the contributor needs to refresh the conflicting branch before normal merge review can finish.

Security
Cleared: The diff narrows a dangerous Codex node-dispatch path and does not add dependencies, workflows, package resolution changes, lifecycle hooks, or secret handling.

Review details

Best possible solution:

Refresh against current main, keep the gateway-side resume approval gate, and land only after maintainers accept approval-required fail-closed resume behavior or define a trusted unattended route.

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

Yes, from source inspection rather than a local live run. Current main and v2026.6.11 mark the Codex resume node command dangerous while forwarding it directly through ctx.invokeNode(), and sibling Codex source confirms resume accepts caller-provided prompt text for an existing session.

Is this the best way to solve the issue?

Yes for the code boundary: the gateway-side node-invoke policy is the narrow guard before raw node dispatch. The unresolved part is maintainer acceptance of the fail-closed compatibility tradeoff and a conflict refresh against current main.

AGENTS.md: found and applied where relevant.

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

Label changes

Label justifications:

  • P1: The PR hardens a dangerous Codex node-host resume command that can affect real Gateway/Codex workflows.
  • merge-risk: 🚨 compatibility: Merging changes existing codex.cli.session.resume callers from direct node dispatch to approval-gated dispatch.
  • merge-risk: 🚨 availability: Merging can make resume workflows fail closed when no plugin approval runtime or operator route is available.
  • rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🦞 diamond lobster and patch quality is 🐚 platinum hermit.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (live_output): The PR body supplies redacted live Gateway/node output and real Control UI bundle output showing the after-fix approval gate and restricted decisions.
  • proof: sufficient: Contributor real behavior proof is sufficient. The PR body supplies redacted live Gateway/node output and real Control UI bundle output showing the after-fix approval gate and restricted decisions.
Evidence reviewed

PR surface:

Source +66, Tests +243. Total +309 across 10 files.

View PR surface stats
Area Files Added Removed Net
Source 5 89 23 +66
Tests 5 244 1 +243
Docs 0 0 0 0
Config 0 0 0 0
Generated 0 0 0 0
Other 0 0 0 0
Total 10 333 24 +309

What I checked:

Likely related people:

  • mbelinky: Authored the merged node-backed Codex CLI session listing/resume feature that introduced the direct resume node-invoke policy this PR changes. (role: introduced behavior; confidence: high; commits: a5c1956ca17a; files: extensions/codex/src/node-cli-sessions.ts, extensions/codex/index.ts)
  • joshavant: Authored the merged plugin approval Gateway/UI surface that the PR extends for node-invoke policy approvals. (role: original approval-surface contributor; confidence: high; commits: 6ade9c474cf1; files: src/gateway/server-methods/plugin-approval.ts, ui/src/ui/controllers/exec-approval.ts, ui/src/ui/views/exec-approval.ts)
  • jesse-merhi: Recently merged the allowed-decision approval UI behavior now present on current main and overlapping the PR refresh area. (role: recent approval UI contributor; confidence: high; commits: 42f0822bfac9; files: ui/src/ui/controllers/exec-approval.ts, ui/src/ui/views/exec-approval.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.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a plugin-approval gate to the Codex CLI session resume node-invoke policy so that resuming a local Codex CLI session requires explicit operator approval before ctx.invokeNode() is dispatched. The session listing policy is unchanged, and the resume node handler itself is unchanged; only the gateway-side invoke policy now interposes an approval request and fails closed when approval is denied or unavailable.

Changes:

  • Replace pass-through resume policy with an async handler that requests a critical-severity plugin approval before dispatching to the node and returns PLUGIN_APPROVAL_REQUIRED on deny or when no approval runtime is reachable.
  • Forward sessionId, agentId, sessionKey, and timeoutMs from the policy context into the approval request payload.
  • Add Vitest regression coverage for deny, unavailable-approval, and allow-once paths of the resume policy.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.

File Description
extensions/codex/src/node-cli-sessions.ts Adds approval gating in the resume node-invoke policy and fail-closed result when approval is denied/unavailable.
extensions/codex/src/node-cli-sessions.test.ts Adds three policy-level tests covering deny, missing approval runtime, and allow-once dispatch.

@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 17, 2026
@openclaw-barnacle openclaw-barnacle Bot added gateway Gateway runtime triage: mock-only-proof Candidate: PR proof only shows tests, mocks, snapshots, lint, typecheck, or CI. and removed proof: sufficient ClawSweeper judged the real behavior proof convincing. triage: needs-real-behavior-proof Candidate: external PR needs after-fix proof from a real setup. labels May 17, 2026
@clawsweeper clawsweeper Bot added P1 High-priority user-facing bug, regression, or broken workflow. impact:security Security boundary, credential, authz, sandbox, or sensitive-data risk. impact:session-state Session, memory, transcript, context, or agent state can drift or corrupt. labels May 17, 2026
@openclaw-barnacle openclaw-barnacle Bot added proof: supplied External PR includes structured after-fix real behavior proof. and removed triage: mock-only-proof Candidate: PR proof only shows tests, mocks, snapshots, lint, typecheck, or CI. labels May 17, 2026
@LaPhilosophie

Copy link
Copy Markdown
Contributor Author

The macos-swift failure appears unrelated to this PR. This branch only touches TypeScript files under the Codex extension, gateway node-invoke policy, and plugin types; no Swift/macOS sources or Swift lint configuration were changed.

@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 17, 2026
@LaPhilosophie
LaPhilosophie force-pushed the codex-resume-approval branch from ec8a59c to 0f6a59e Compare May 17, 2026 12:57
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 17, 2026
@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 17, 2026
@LaPhilosophie

Copy link
Copy Markdown
Contributor Author

I rebased this branch onto current main to pick up the latest macOS Swift formatting changes. macos-swift is now skipped on the new head.

The remaining failures point to files outside this PR’s diff (src/plugins/install.test.ts and extensions/qa-lab/src/live-transports/whatsapp/whatsapp-live.runtime.ts). They appear to be unrelated current-main typecheck failures rather than failures introduced by this PR.

@openclaw-barnacle openclaw-barnacle Bot added size: M and removed size: S proof: sufficient ClawSweeper judged the real behavior proof convincing. labels May 20, 2026
@clawsweeper

clawsweeper Bot commented May 20, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

Re-review progress:

@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. merge-risk: 🚨 availability 🚨 May cause crashes, hangs, restart loops, stalls, or process outages. and removed status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. labels May 20, 2026
@openclaw-barnacle openclaw-barnacle Bot added proof: supplied External PR includes structured after-fix real behavior proof. and removed proof: sufficient ClawSweeper judged the real behavior proof convincing. triage: needs-real-behavior-proof Candidate: external PR needs after-fix proof from a real setup. labels May 20, 2026
@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. and removed 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. labels May 20, 2026
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 20, 2026
@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 23, 2026
@LaPhilosophie

LaPhilosophie commented May 23, 2026

Copy link
Copy Markdown
Contributor Author

The android-test-play failure appears unrelated to this PR. The actual Run Android test-play step completed successfully; the job failed later in Post Setup Java while saving cache:

  • Failed to save: failed to upload block, error uploading part
  • uploadCacheArchiveSDK: internal error uploading cache archive

This PR only touches TypeScript files in the Codex extension, gateway plugin approval policy, and Control UI approval handling. No Android, Gradle, Java, or CI cache configuration files are changed.

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented May 24, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

Re-review progress:

@clawsweeper clawsweeper Bot added rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. and removed rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. labels Jun 22, 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 15, 2026
@openclaw-barnacle

Copy link
Copy Markdown

Closing due to inactivity.
If you believe this PR should be revived, post in #clawtributors on Discord to talk to a maintainer.
That channel is the escape hatch for high-quality PRs that get auto-closed.

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

Labels

app: web-ui App: web-ui extensions: codex gateway Gateway runtime merge-risk: 🚨 availability 🚨 May cause crashes, hangs, restart loops, stalls, or process outages. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. 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: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. size: M stale Marked as stale due to inactivity status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants