Allow-listed Read/Write silently soft-deny after ~600s permission timeout in remote/multi-session VS Code
Resolved 💬 2 comments Opened Jun 6, 2026 by Ashkaan Closed Jun 10, 2026
Summary
When running the VS Code extension over code serve-web (remote) with multiple concurrent sessions sharing one extension host, a Read/Write tool call that needs a permission decision can hang for the full default permission timeout (~600000 ms) and then resolve to a phantom rejection — even though the user never saw or rejected a prompt.
The tool result the model receives is:
The user doesn't want to take this action right now. STOP what you are doing and wait for the user to tell you how to proceed.
…with toolUseResult: "Error: undefined".
Why this is a bug
- The message is the engine's interrupt/abort string (defined inline next to
[Request interrupted by user]), not the real user-reject string ("...doesn't want to proceed with this tool use. ...rejected (eg. if it was a file edit...)"). So an unanswered/aborted permission request is being surfaced to the model as if the user actively rejected it. - The affected tools (
Read,Write) were already present inpermissions.allowin.claude/settings.json, yet still round-tripped to the IDE permission channel. - There is no responder, so the request hits the default ~600 s timeout and silently soft-denies. The user perceives nothing; the model perceives a rejection it must obey.
Evidence (observed)
- Two occurrences in one session; each preceded by the tool call hanging exactly 600.016 s and 600.020 s (= default 600000 ms timeout, to the millisecond) before the deny result arrived.
- Recorded result:
toolUseResult: "Error: undefined"(empty permission response coerced to the soft-deny). - Only
Read/Write(which round-trip to--permission-prompt-tool stdio) were affected; neverEdit(auto-accepted under--permission-mode acceptEdits, no round-trip). - No PreToolUse hook matched
Read, ruling out user hooks.
Environment
- Extension
anthropic.claude-code2.1.167, native binary, launched by the VS Code extension host overcode serve-web(remote), flags--permission-prompt-tool stdio --permission-mode acceptEdits. - Three concurrent native engines sharing one extension host process. Only the focused webview can render a prompt, so a background session's permission request is never surfaced.
Repro
code serve-web(remote), open 3 concurrent Claude Code sessions in one window,--permission-mode acceptEdits.- In a non-focused session, trigger a
Read. - Expected: prompt is shown, or the
permissions.allowrule is honored (no prompt). - Actual: ~600 s hang, then a phantom "The user doesn't want to take this action right now" rejection.
Suggested fixes
- Honor
permissions.allowforRead/Writeso they don't require an IDE round-trip. - A permission request with no responder should surface as a visible, fast, retryable error — not a silent 10-minute hang that coerces to a soft-deny.
- Distinguish "aborted/timed-out permission request" from "user rejected" in the message sent to the model.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗