A resumed headless session could hand you back a permission prompt left unanswered, but three variables must be set.
Adopting a parked permission needs CLAUDE_CODE_ADOPT_UNDERIVABLE_PARKED_PERMISSION plus a hold or retire variable, all unset by default.
What's wrong with this entry?
When a headless session resumes and finds a permission request that was left unanswered, and that request does not belong to the interrupted turn's tools, Claude Code can now hand it back to you as an adopted prompt, and on a denial or a timeout retire the interrupted turn rather than re-running it. This needs CLAUDE_CODE_ADOPT_UNDERIVABLE_PARKED_PERMISSION set plus either CLAUDE_CODE_HOLD_UNANSWERED_PARKED_PERMISSION or CLAUDE_CODE_RETIRE_UNANSWERED_PARKED_PERMISSION. All three are unset by default.
- A classifier decides whether such a request is adoptable or excluded, distinguishing "underivable_adoptable" from "underivable_excluded", "underivable_leaf_only" and "underivable_no_superseded".
- The ADOPT variable is new in this release; the HOLD and RETIRE ones already existed.
CLAUDE_CODE_ADOPT_UNDERIVABLE_PARKED_PERMISSION
Strings lifted out of the shipped bundle, so the claim above can be checked against them.
Related
Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.
-
v2.1.235
Unanswered permission prompts can be held open across a resume
Both mention parked hold unanswered retire
-
v2.1.233
Env var to drop permission prompts left unanswered when a session resumes
Both mention parked unanswered retire