Stop repeating yourself every time you start a new Claude Code session. cc-fork helps you create and manage Claude Code sessions with pre-loaded codebase context.
When working with Claude Code on complex codebases, you often need to spend the first few minutes guiding Claude to understand your project before you can get to actual work. If you work on the same codebase across multiple sessions, you repeat this onboarding ritual every single time.
cc-fork lets you create reusable base sessions — kickstart prompts that prime Claude with your codebase knowledge. Fork from a base session anytime to get a new working session with context pre-loaded.
Create once, fork forever.
npm install -g cc-forkAlso available as ccfork. Requires Claude Code.
# One-time setup: create a base session
cc-fork create payments
# Opens your editor — write a prompt that guides Claude through relevant code
# Daily usage: fork when you need to work
cc-fork payments
# Launches Claude with full context, ready for your questions- Shareable prompts — Session files contain only your prompt, safe to commit and share with your team
- Local session state — Session IDs stored in
~/.cc-fork/, so no git noise when refreshing - Survives re-clones — Sessions persist across repo re-clones (same git remote)
- Stale prompt detection — Warns when your prompt changed since last refresh
cc-fork create payments # One-time setup
cc-fork payments # Daily usage (shorthand for `cc-fork fork payments`)cc-fork create payments --model haiku # Cheap context building
cc-fork payments --model opus # Powerful reasoningcc-fork use payments # Resume base session, add more context
cc-fork payments # Future forks include the new contextcc-fork create payments --no-eval # Create the file without calling Claude
# Edit the prompt at your leisure...
cc-fork refresh payments # Evaluate when readycc-fork refresh payments # Rebuild after major codebase changes| Command | Description |
|---|---|
create <name> |
Create a new base session (alias: new) |
fork <name> |
Fork from base session (default command) |
use <name> |
Resume base session directly |
refresh <name> |
Rebuild with new session ID (alias: rebuild) |
list |
List all sessions |
edit <name> |
Open session in editor |
delete <names...> |
Delete sessions |
Sessions are stored as markdown files in .claude/cc-fork/:
.claude/cc-fork/
├── payments.md # your prompt + Claude flags
├── auth.md
└── checkout.md
Commit these files to share prompts with your team. Session state (IDs, timestamps) is stored locally in ~/.cc-fork/ and never committed.
create:
-p, --prompt <text>— Provide prompt inline, skip editor-i, --interactive— Enter Claude Code after prompt (default: true)--no-eval— Create session file without evaluating the prompt
refresh:
-i, --interactive— Enter Claude Code after prompt (default: true)
delete:
-f, --force— Skip confirmation
Any claude CLI flag can be passed through. Flags resolve from (highest precedence first):
- CLI arguments —
cc-fork payments --model opus - Session frontmatter — YAML header in the markdown file
Flags passed during create are persisted in frontmatter.
Configure cc-fork via .claude/cc-fork/config.yaml:
interactive: false # disable interactive mode (default: true)
defaultCommand: use # what `cc-fork <name>` runs (default: fork)
projectId: my-team-app # override automatic project identificationFor Claude Code settings (model, permissions), use .claude/settings.json.
| YAML | Claude CLI |
|---|---|
model: haiku |
--model haiku |
dangerously-skip-permissions: true |
--dangerously-skip-permissions |
dangerously-skip-permissions: false |
(omitted) |
allowedTools: ["Bash(git *)", "Read"] |
--allowedTools "Bash(git *)" "Read" |
Boolean false means "don't pass this flag" — useful for overriding a session-level true.
MIT
