[Feature Request] Add Option to Save Incremental Plan Progress
Description
In plan mode (activated by shift+tab),
claude-code should offer another option to write down the plan, instead of starting coding or continue planning. It's often the case that the agentic loop of "plan -> code -> test" will run out of context quickly.
Unless we have setup an appropriate subagent to execute a plan, this scenario will occur quite frequently, especially with complex tasks and large codebase. Interrupting an agentic loop in the middle when context is running out is not necessarily better either.
An option to write down a plan should be given to the user to incentivize writing down incremental progress of a session. Loading a session from the history by resuming only loads the whole conversation in a session, it doesn't provide a granular recording.
Another option: Writing in memory is probably not suitable either, as we don't always need to load up all the written down plans and progress for each session.
Environment Info
- Platform: darwin
- Terminal: ghostty
- Version: 1.0.117
- Feedback ID: 475aae6e-f4c3-4a72-a3ba-670e40bf3f3d
Errors
[{"error":"Error: Language not supported while highlighting code, falling back to markdown: \n at Bz (/$bunfs/root/claude:1655:1192)\n at <anonymous> (/$bunfs/root/claude:1655:2177)\n at map (native:1:11)\n at Bz (/$bunfs/root/claude:1655:2149)\n at map (native:1:11)\n at Bz (/$bunfs/root/claude:1655:2054)\n at map (native:1:11)\n at S7 (/$bunfs/root/claude:1655:905)\n at n4W (/$bunfs/root/claude:3304:13729)\n at aq (/$bunfs/root/claude:47:19415)","timestamp":"2025-09-17T08:41:23.778Z"},{"error":"Error: Language not supported while highlighting code, falling back to markdown: \n at Bz (/$bunfs/root/claude:1655:1192)\n at <anonymous> (/$bunfs/root/claude:1655:2177)\n at map (native:1:11)\n at Bz (/$bunfs/root/claude:1655:2149)\n at map (native:1:11)\n at Bz (/$bunfs/root/claude:1655:2054)\n at map (native:1:11)\n at S7 (/$bunfs/root/claude:1655:905)\n at n4W (/$bunfs/root/claude:3304:13729)\n at aq (/$bunfs/root/claude:47:19415)","timestamp":"2025-09-17T08:41:24.075Z"},{"error":"Error: Language not supported while highlighting code, falling back to markdown: \n at Bz (/$bunfs/root/claude:1655:1192)\n at <anonymous> (/$bunfs/root/claude:1655:2177)\n at map (native:1:11)\n at Bz (/$bunfs/root/claude:1655:2149)\n at map (native:1:11)\n at Bz (/$bunfs/root/claude:1655:2054)\n at map (native:1:11)\n at S7 (/$bunfs/root/claude:1655:905)\n at bR0 (/$bunfs/root/claude:1803:41539)\n at aq (/$bunfs/root/claude:47:19415)","timestamp":"2025-09-17T08:43:11.525Z"},{"error":"Error: Failed to fetch version from stable: Error: ECONNREFUSED\n at TC9 (/$bunfs/root/claude:2875:16304)\n at processTicksAndRejections (native:7:39)","timestamp":"2025-09-17T11:00:01.539Z"},{"error":"Error: Failed to fetch version from stable: Error: ECONNREFUSED\n at TC9 (/$bunfs/root/claude:2875:16304)\n at processTicksAndRejections (native:7:39)","timestamp":"2025-09-17T11:57:34.924Z"},{"error":"Error: Failed to fetch version from stable: AxiosError: timeout of 30000ms exceeded\n at TC9 (/$bunfs/root/claude:2875:16304)\n at processTicksAndRejections (native:7:39)","timestamp":"2025-09-18T02:28:47.072Z"},{"error":"Error: EISDIR: illegal operation on a directory, read\n at readFileSync (unknown)\n at GdG (/$bunfs/root/claude:3568:9434)\n at call (/$bunfs/root/claude:1665:981)\n at MT9 (/$bunfs/root/claude:3292:18664)\n at processTicksAndRejections (native:7:39)","timestamp":"2025-09-18T03:05:16.707Z"}]
6 Comments
Found 3 possible duplicate issues:
This issue will be automatically closed as a duplicate in 3 days.
🤖 Generated with Claude Code
Each of those issues are slightly different, what I suggest is to consolidate all these different feedback and workflows to something that's more developer friendly, and more automated.
I know that memory can be used, but during planning, that doesn't seem what a developer would think of doing. Memory could only be saved during various checkpoints where Claude is giving a response, and waiting for the user. The agentic loop itself need to recognize where to save a checkpoint
Hey, this is a fantastic feature request, and something I've run into myself. The tension between creating a comprehensive plan and the limits of the context window is a real challenge, especially on large, unfamiliar codebases. Your point about
resumenot being granular enough andCLAUDE.mdnot being suitable for temporary plans is spot on.While we wait for an official feature from the Anthropic team, I've been experimenting with some workarounds using Claude Code's existing extensibility features. Maybe one of these could help you in the meantime?
Potential Workaround using Custom Slash Commands
You could create a custom slash command to quickly save the plan to a file. This is more manual than your suggestion but gives you direct control.
First, create a simple shell script in your project, for example, at
.claude/scripts/save_plan.sh. Make sure it's executable (chmod +x .claude/scripts/save_plan.sh).``
bash
``# .claude/scripts/save_plan.sh
#!/bin/bash
# Saves the provided plan text to a file, overwriting the previous one.
echo "$1" > ./.claude/current_plan.md
echo "✅ Plan saved to ./.claude/current_plan.md"
Now, create the command file at
.claude/commands/save-plan.md. This command will execute the script using Claude'sBashtool.```
markdown./.claude/scripts/save_plan.sh "$ARGUMENTS"---
description: "Saves the current plan to .claude/current_plan.md"
allowed-tools: Bash(*)
argument-hint: [plan text to save]
---
!
```When Claude generates a plan you want to save, you can copy the plan text from the terminal and then run:
``
``> /save-plan <paste the plan here>
This gives you a quick way to checkpoint a plan. To load it back into context later, you could just
@-mentionthe file:Continue with the plan in @.claude/current_plan.md.More Automated Approach with Hooks
For your idea about making the agentic loop itself "smarter," you might be able to achieve something similar with Hooks. Specifically, the
Stophook runs every time Claude finishes responding and waits for your input.You could write a script for a
Stophook that:transcript_path).plan.mdfile.This is more complex to set up but gets closer to your idea of automated, incremental checkpointing without manual user intervention.
Anyway, just some ideas from another user. I definitely think your core request for a built-in "save plan progress" feature would be a huge improvement to the plan mode workflow! I'm giving this issue a thumbs up.
Using the
Stophook event I think is what I'm looking for.Slash command will only work if I choose "continue planning", which is just a few keystrokes away from me asking Claude to write down a plan.
Then, what I would do next is to add a slash command to load the plans from the given directory
I think the latest plan mode with Opus 4.5 have addressed this issue, closing.
This issue has been automatically locked since it was closed and has not had any activity for 7 days. If you're experiencing a similar issue, please file a new issue and reference this one if it's relevant.