Context & memory·terminal·MIT
cc-mod-park
Bookmark an unfinished session and exit; resume it later from the same folder.

cc-mod-park sets a Claude Code session aside so you can come back to it later. /park records the session and exits; the next time you start claude in the same folder, a button above the prompt lists what you parked, and one click brings the conversation back. Neither step goes through the model, so parking costs no turn.

It is meant for the Friday case: the work is not done and you would rather not leave the session open all weekend. An idle session is not free: on the author’s machine each held about 600 MB of memory, and when sessions message each other, an idle one can be woken for a full turn, at full price once its prompt cache has expired.
What it does
- Park.
/park, or/park <note>, saves the session to a list and closes Claude Code. The note becomes the entry’s title; without one, the title is the session’s AI title or the start of its first prompt. - Find. A new session in the same folder shows an “N parked sessions” button above the prompt. It opens a side pane with the parked sessions, newest first: title, model and effort, how long ago, and the git branch.
- Resume. Resume runs
/resumein the session you just opened, so the parked conversation takes its place. Remove drops the entry instead. A failed resume keeps it. - Restore. After the resume, the mod sets the model and effort the session had when you parked it and prints one line per setting with a check or a cross. The first request afterwards logs the model and effort it actually used.
The button hides once you send a prompt that is not a slash command, so it stays out of the way of new work.
The folder must match exactly: a session parked in repo/sub shows up in repo/sub, not in repo. If the folder is gone, as with a removed git worktree, the entry shows at the repo root, or else at the nearest parent folder that still exists, marked as gone.
Claude Code’s /resume picker lists every past session, finished or not. The park list holds only the ones you marked as unfinished, where you left them, and an entry leaves the list once you pick it up, whether through the button or with claude --resume in a new process.
Install
Needs Claude Code 2.1.287 or later.
claude plugin marketplace add GGGODLIN/cc-mod-park
claude plugin install cc-mod-park@cc-mod-park
Sessions started after the install load it. Type /park when you stop for now. To reach the button by keyboard, press ctrl+x tab; focus may land first on another mod’s button in that row, such as those of the same author’s cc-mod-waitwhat.
The interface comes in English and Traditional Chinese, as in the demo. It follows Claude Code’s language setting, then LC_ALL or LANG; to fix it, set this plugin’s Language to en or zh-TW in /config.
How it works
/park is a command the mod answers itself, the way /cost works, so no model turn starts and the resumed history holds no request to park. Only the one-line result, Parked: <title>, stays in the conversation, where the model can read it later. The mod keeps no copy or summary of the conversation: Resume hands the session id to Claude Code’s own /resume, which brings the conversation back as Claude Code stored it.
Each entry in ~/.local/state/cc-mod-park/parked.json holds the session id, folder, repo root, git branch, title, model, effort and the time you parked it. Goal, now and next lines from the author’s own recap tool, and a Herdr pane title, are added when their files exist. Titles and notes can describe your work, so the author suggests treating the file like your transcripts.
To build the entry, the mod reads the session’s transcript under ~/.claude/projects/ for its AI title and runs git for the branch and repo root. The prompt.submit hook only checks whether a prompt starts with /, to hide the button; it stores nothing. The turn.step hook notes the effort of each request, since Claude Code offers no other way to read it. There are no network calls.
/resume saves the resumed session’s model as your default model, and /effort saves the level as that model’s default. The mod reads settings.json before the resume and, if either default changed, writes the old values back. If the file cannot be read, nothing is written and the result line says so.
Limitations
- Switching to a parked session with the
/resumepicker inside an open session does not remove it from the list, because a mod gets no start event for that switch. Remove it by hand. /parktyped while the model is still answering is queued and then dropped. Wait for the turn to end.- Every session shares one list file, rewritten whole each time, so two sessions parking or resuming in the same moment can lose one of the changes. The file lives under
$HOME, not underCLAUDE_CONFIG_DIR, so separate config folders share it. - Putting the defaults back cannot tell who changed them: a change to the default model or effort made by you or another session in that same second is reverted too.
- After Resume, the old conversation takes a few seconds to appear, and the status line shows the restored model only after your next message.
- If another mod draws above the prompt without passing the render on, the park button does not show, with no error.
- The button and pane draw only in the terminal. The author tested the mod on macOS with Claude Code 2.1.288 and 2.1.289, with later checks up to 2.1.294.
More mods
The whole directory →auto-handoff
Hands a long session to a fresh one with a Haiku-written brief instead of compacting.
cache-keepalive
Keeps the prompt cache warm while background tasks run, and caps what the pings cost.
cache-keeper
Prompt-cache timer, keep-warm pings, cold-send guard, a board of chats and a handoff.
cache-tax
Blocks a cold prompt-cache send once with its price, then keeps the cache warm for hours.


