[Feature Request] Plan mode should support plan files outside ~/.claude/plans directory

Resolved 💬 9 comments Opened Nov 30, 2025 by ariccio Closed Jan 19, 2026

Bug Description
New plan mode (is this the V2 that I saw env vars for?) can ONLY use plan files in ~/.claude/plans, which breaks many workflows that use plan files in other places.

slightly more detail

The new plan mode is a step in the right direction. I started writing context to files for managing cross-session work waaaay back in june, so I'm glad to see it formalized. BUT

BUT the new plan mode breaks a few things. I tend to like to version control my plan files - it makes it easier to review the code and run other LLMs or even other claude code sessions to check the work product. A bit like antigravity before antigravity.

The new plan mode seems to FORCE using the plans in ~/.claude/plans, even when I explicitly ask it to use sentry-architecture-redesign-plan.md or something like it.

When I'm lucky after compaction it will remember to also read my plan file:

  ⎿  Referenced file copilot_notes/sentry-architecture-redesign-plan.md
  ⎿  Read ../../../.claude/plans/abstract-fluttering-unicorn.md (145 lines)

But this is very brittle. When planning, it's also VERY confusing! Which plan is it presenting with ExitPlanMode? Is it abstract-fluttering-unicorn.md or sentry-architecture-redesign-plan.md? What's the actual difference?

Then there are... other sillynesses... like, asking claude to edit the plan files in ~/.claude, when outside of plan mode, triggers the permissions request prompt because it's editing a file in .claude! If I ask it to make a bunch of changes to the file... a bunch of requests, because .claude directories are never allowed to "always accept edits" for what I presume are obvious security reasons. Oopsies.

@ed-irl has shared a closely related bug report here:
https://github.com/anthropics/claude-code/issues/12619

I think this is clearly related, here in @jgwill's report:
https://github.com/anthropics/claude-code/issues/12499

I think this is a parallel problem, as I've seen the new permissions for plan mode (enforcing read only more aggressively?) break writes by the Plan subagent when I ask it to edit my own plan files (e.g. sentry-architecture-redesign-plan.md), in @alexn-tinwell's issue:
https://github.com/anthropics/claude-code/issues/12434

I _very_ vaguely suspect this is related: https://github.com/anthropics/claude-code/issues/12595

For what it's worth, I think the comments in this issue are incorrect:
https://github.com/anthropics/claude-code/issues/12366

I almost _always_ want my plan files to be as thorough as possible. Getting things done faster is not super valuable to me if they're not done correctly... I can do things arbitrarily fast if they don't have to be correct!

Environment Info

  • Platform: darwin
  • Terminal: Apple_Terminal
  • Version: 2.0.55
  • Feedback ID: accd68fd-35be-499f-944b-532b6c25038a

Errors

[{"error":"Error: 400 {\"type\":\"error\",\"error\":{\"type\":\"invalid_request_error\",\"message\":\"max_tokens: Extra inputs are not permitted\"},\"request_id\":\"req_011CVd8voMtnDottXvy72XrJ\"}\n    at t2.generate (file:///Users/alexanderriccio/.nvm/versions/node/v24.10.0/lib/node_modules/@anthropic-ai/claude-code/cli.js:459:9427)\n    at LT.makeStatusError (file:///Users/alexanderriccio/.nvm/versions/node/v24.10.0/lib/node_modules/@anthropic-ai/claude-code/cli.js:1312:2195)\n    at LT.makeRequest (file:///Users/alexanderriccio/.nvm/versions/node/v24.10.0/lib/node_modules/@anthropic-ai/claude-code/cli.js:1312:5419)\n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n    at async file:///Users/alexanderriccio/.nvm/versions/node/v24.10.0/lib/node_modules/@anthropic-ai/claude-code/cli.js:1464:2769\n    at async file:///Users/alexanderriccio/.nvm/versions/node/v24.10.0/lib/node_modules/@anthropic-ai/claude-code/cli.js:1464:2262\n    at async FB5 (file:///Users/alexanderriccio/.nvm/versions/node/v24.10.0/lib/node_modules/@anthropic-ai/claude-code/cli.js:1463:16949)\n    at async ZQ2 (file:///Users/alexanderriccio/.nvm/versions/node/v24.10.0/lib/node_modules/@anthropic-ai/claude-code/cli.js:1464:2195)\n    at async $RA (file:///Users/alexanderriccio/.nvm/versions/node/v24.10.0/lib/node_modules/@anthropic-ai/claude-code/cli.js:2252:52)\n    at async nu5 (file:///Users/alexanderriccio/.nvm/versions/node/v24.10.0/lib/node_modules/@anthropic-ai/claude-code/cli.js:2252:2244)","timestamp":"2025-11-30T00:36:09.972Z"},{"error":"Error: 400 {\"type\":\"error\",\"error\":{\"type\":\"invalid_request_error\",\"message\":\"max_tokens: Extra inputs are not permitted\"},\"request_id\":\"req_011CVd9fXuf8PVyPHJzgj8sA\"}\n    at t2.generate (file:///Users/alexanderriccio/.nvm/versions/node/v24.10.0/lib/node_modules/@anthropic-ai/claude-code/cli.js:459:9427)\n    at LT.makeStatusError (file:///Users/alexanderriccio/.nvm/versions/node/v24.10.0/lib/node_modules/@anthropic-ai/claude-code/cli.js:1312:2195)\n    at LT.makeRequest (file:///Users/alexanderriccio/.nvm/versions/node/v24.10.0/lib/node_modules/@anthropic-ai/claude-code/cli.js:1312:5419)\n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n    at async file:///Users/alexanderriccio/.nvm/versions/node/v24.10.0/lib/node_modules/@anthropic-ai/claude-code/cli.js:1464:2769\n    at async file:///Users/alexanderriccio/.nvm/versions/node/v24.10.0/lib/node_modules/@anthropic-ai/claude-code/cli.js:1464:2262\n    at async FB5 (file:///Users/alexanderriccio/.nvm/versions/node/v24.10.0/lib/node_modules/@anthropic-ai/claude-code/cli.js:1463:16949)\n    at async ZQ2 (file:///Users/alexanderriccio/.nvm/versions/node/v24.10.0/lib/node_modules/@anthropic-ai/claude-code/cli.js:1464:2195)\n    at async $RA (file:///Users/alexanderriccio/.nvm/versions/node/v24.10.0/lib/node_modules/@anthropic-ai/claude-code/cli.js:2252:52)\n    at async nu5 (file:///Users/alexanderriccio/.nvm/versions/node/v24.10.0/lib/node_modules/@anthropic-ai/claude-code/cli.js:2252:2244)","timestamp":"2025-11-30T00:45:50.358Z"},{"error":"SyntaxError: Unexpected non-whitespace character after JSON at position 65 (line 6 column 1)\n    at JSON.parse (<anonymous>)\n    at file:///Users/alexanderriccio/.nvm/versions/node/v24.10.0/lib/node_modules/@anthropic-ai/claude-code/cli.js:74:693\n    at B (file:///Users/alexanderriccio/.nvm/versions/node/v24.10.0/lib/node_modules/@anthropic-ai/claude-code/cli.js:8:6527)\n    at CQ2 (file:///Users/alexanderriccio/.nvm/versions/node/v24.10.0/lib/node_modules/@anthropic-ai/claude-code/cli.js:1465:2276)\n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)","timestamp":"2025-11-30T00:56:19.327Z"},{"error":"Error: Request was aborted.\n    at Bt._createMessage (file:///Users/alexanderriccio/.nvm/versions/node/v24.10.0/lib/node_modules/@anthropic-ai/claude-code/cli.js:463:3151)\n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)","timestamp":"2025-11-30T01:04:59.219Z"}]

View original on GitHub ↗

This issue has 9 comments on GitHub. Read the full discussion on GitHub ↗