One command, then a browser login
Docs
Checkpoint gives your AI coding agent persistent project memory: a state digest at session start, purpose-built verbs while you work, and a reconcile step at session end. Setup is one command and a browser login.
How it works
- Session start: a Claude Code or Codex hook fetches your project's state digest — one dense, token-budgeted block covering current phase, where you left off, open bugs and questions, and recent decisions — and injects it before you type anything. Cursor loads the same digest through its project rule.
- During the session: the agent logs builds, decisions, ideas, bugs, and questions over MCP as they happen.
- Session end: the agent calls
reconcile_sessionwith a summary and an exact left-off line, which recomposes the digest for next time. - If the agent forgets: Claude Code and Codex use a session-end hook to send the session to Checkpoint, which distills and logs it automatically. Cursor cannot expose its transcript today, so its rule must complete the reconcile step.
Setup
Run this inside the repository. The CLI supports Claude Code, Codex, Cursor, or several at once:
npx checkpoint-memory-cli@latest init --origin https://checkpoint-silk.vercel.app
Approve the browser login. The CLI creates or selects a permanent Checkpoint project before it installs MCP, instructions, and hooks. There is no API key to copy.
Paste the prompt printed by the CLI into the first agent session. Fresh repositories get a planning interview; existing ones get a scan-and-import interview. Both prompts call
initialize_projectwith the already-reserved project ID.See canonical prompt examples
Fresh repository:
Initialize Checkpoint project "My Project" (id: 00000000-0000-0000-0000-000000000000) for this new repository. Do not create another project. If we have not already agreed on the plan, interview me one question per message about what I am building, who it is for, and the outcomes it should deliver. Draft a feature map (name, one-sentence purpose, status, next step) from my answers and ask me to edit it; do not silently invent product requirements. Then call initialize_project for project id 00000000-0000-0000-0000-000000000000, save or draft a PRD for me to confirm, and call get_project_state with the same project id.
Existing repository:
Initialize Checkpoint project "My Project" (id: 00000000-0000-0000-0000-000000000000) from this existing repository. Do not create another project. 1. Scan the repository structure, README, key configuration, and recent git history. Skim; do not read every file. 2. Tell me briefly what you found, then interview me one question per message. Ask why I made 3–5 deliberate-looking choices, but never suggest or invent the reason. If I say "skip", record nothing for that choice. 3. Propose the exact point where work was left off and a feature map: name, one-sentence outcome, cautious status, and next step. Treat every code-detected feature as a suggestion. Ask me to confirm or correct it; never call something Live just because code exists. 4. After I confirm, call initialize_project for project id 00000000-0000-0000-0000-000000000000 with the agreed features. Preserve any historical work as optional legacy phases only when useful to this repository, record only decision reasons I actually gave, seed the confirmed left_off, and save a PRD based on the code plus my answers. 5. Call get_project_state with project id 00000000-0000-0000-0000-000000000000 and show me the result.
Codex
Choose codex in the CLI. It configures shared MCP OAuth, writes the short protocol into AGENTS.md, and installs project hooks. Open /hooks once to review and trust them. Add another agent later with checkpoint agent add cursor.
Cursor
Choose cursor in the CLI. It writes the MCP server and always-on project rule. Cursor does not currently expose the transcript for automatic capture, so its rule makes reconcile_session the required session-end path.
Other MCP agents
Any MCP-capable agent works. Connect to https://checkpoint-silk.vercel.app/api/mcp over streamable HTTP — tools that support MCP authorization will open a browser login automatically. For tools without OAuth support (or headless use), pass an API key instead:
{
"mcpServers": {
"checkpoint": {
"url": "https://checkpoint-silk.vercel.app/api/mcp",
"headers": {
"Authorization": "Bearer <YOUR_API_KEY>"
}
}
}
}Have the agent call get_project_state at session start and reconcile_session before ending. For hook-style integrations, the digest is also plain text at GET https://checkpoint-silk.vercel.app/api/state?project=<project-id> with the same Bearer auth.
Verb reference
| get_project_state | The state digest — call at session start (the hook does this for you). |
| list_projects | Compact list of your projects with status and current phase. |
| create_project | New project in one call — confirmed features, decisions, and a PRD. Legacy phases remain accepted for existing agents. |
| suggest_feature / update_feature | Propose a code-discovered feature for human confirmation, then keep confirmed feature status and next step current. |
| note_to_agent | Save a trusted human note for the next agent session. |
| initialize_project | Populate the permanent project ID reserved by CLI or dashboard onboarding. |
| log_build | Record what got built this session — where it stopped, the options for next time, plus the commit SHA to anchor it to a code state. |
| update_phase | Change phase status, check off tasks, add tasks, set the current phase. |
| log_decision | Record a settled choice with its rationale, marked yours or the agent's — yours bind, the agent's can be argued with. |
| add_idea | Park an idea so it stops occupying the conversation. |
| add_bug | File a bug with severity. |
| update_bug | Change bug status or severity, or append a note. |
| add_question | Raise a question that needs a human answer. |
| resolve_question | Answer an open question. |
| get_doc | Fetch the PRD or any project doc. |
| update_doc | Rewrite or append to a doc. |
| search | Full-text search across everything in a project. |
| reconcile_session | Session-end protocol: summary, where it stopped, what to pick between next, commit SHA, completed tasks — one call. |
Limits & your data
- Rate limits: 120 requests/min per connection on the MCP endpoint, 60/min on the state endpoint — far above what a working session needs.
- API keys are stored as SHA-256 hashes and shown exactly once. Revoke any key instantly from Settings.
- Projects are isolated per account; every verb is scoped to the key's owner.
- Your data is plain text by design — the digest and every doc are readable via the API whenever you want them out.