From c48c9134d9c81d2dc9db1e6a167d1ebd5ee086ee Mon Sep 17 00:00:00 2001 From: YeonGyu-Kim Date: Fri, 24 Apr 2026 13:31:50 +0900 Subject: [PATCH] =?UTF-8?q?roadmap:=20#198=20filed=20=E2=80=94=20MCP=20app?= =?UTF-8?q?roval-prompt=20opacity,=20no=20blocked.mcp=5Fapproval=20state,?= =?UTF-8?q?=20pane-scrape=20required=20(gaebal-gajae=20cycle=20#135=20/=20?= =?UTF-8?q?Jobdori=20cycle=20#248)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ROADMAP.md | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/ROADMAP.md b/ROADMAP.md index 03fa0f3..355ec62 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -12187,3 +12187,35 @@ cat ~/.claw/settings.json **Status:** Open. No code changed. Merge-wait mode. 🪨 + +--- + +## Pinpoint #198 — MCP approval-prompt opacity: no `blocked.mcp_approval` state, pane-scrape required to detect approval-blocked sessions (gaebal-gajae, cycle #135 / Jobdori cross-filed cycle #248) + +**Observed:** `clawcode-human` session alive but blocked on `omx_memory.project_memory_read(...)` TUI approval prompt (`Allow / Allow for this session / Always allow / Cancel`). From outside (clawhip, downstream monitors), the session emits no typed blocked state — it appears identical to ordinary idle/live work. Operator cannot distinguish "waiting for human MCP approval" from "working quietly" without pane scraping. + +**Gap:** `lane.blocked` taxonomy (ROADMAP item around `blocked.mcp_handshake`, `blocked.trust_gate` etc.) does not include `blocked.mcp_approval` — the state where the runtime is paused at an interactive permission prompt awaiting operator decision. This means: +- Clawhip nudges can misread approval-blocked sessions as ordinary idle/live work +- No structured event (`needs_operator_decision`) emitted on approval-prompt display +- Recovery recipes cannot route "approve / deny / escalate" without pane scraping + +**Repro:** +``` +# Start session with MCP tool requiring approval +claw --session clawcode-human +# Session reaches omx_memory.project_memory_read(...) approval prompt +# From outside: session appears live/idle — no blocked.mcp_approval event emitted +claw status --session clawcode-human # → no approval-blocked indicator +``` + +**Expected:** Session status JSON includes `blocked.mcp_approval` when runtime is paused at approval prompt. Downstream monitors can act without pane scraping. + +**Fix sketch:** +1. Emit `blocked.mcp_approval` event when TUI approval prompt is displayed +2. Include in session status JSON: `state: blocked`, `blocked_reason: mcp_approval`, `pending_tool: ""` +3. Add `claw approve` / `claw deny` CLI subcommand to resolve remotely without pane interaction +4. Surface in `claw doctor` as active blocked session + +**Status:** Open. No code changed. Merge-wait mode. Filed from DOGFOOD_FINDINGS.md evidence (gaebal-gajae). + +🪨