Your project context, right in the terminal
The KeepGoing CLI lets you check momentum, browse session history, get re-entry briefings, save checkpoints, and install a shell hook that shows your context every time you enter a project directory.
Running keepgoing briefing in your project:
KeepGoing · Re-entry Briefing
Last seen: 12 days ago on feature/auth-refactor
Summary: Refactored auth middleware to support JWT rotation
Next step: Implement verifyRefreshToken helper in auth.ts
Files: auth.ts, middleware.ts, routes/token.ts (+2 more)
Install
One-line install (recommended):
curl -fsSL https://keepgoing.dev/install.sh | bash Or install with npm directly:
npm install -g @keepgoingdev/cli Commands
keepgoing init
Set up KeepGoing hooks and CLAUDE.md in the current project. Configures your project so AI tools and the shell hook can find your checkpoints.
| Flag | Description |
|---|---|
--scope <s> | Scope: "project" (default) or "user" (global) |
keepgoing status
Show the last checkpoint for the current project. Prints the summary, next step, branch, and files touched.
| Flag | Description |
|---|---|
--cwd <path> | Override the working directory |
--json | Output raw JSON of the last checkpoint, useful for scripting |
--quiet | Output a single summary line (used by the shell hook) |
keepgoing momentum
Show your current developer momentum: last checkpoint with branch-change detection, worktree awareness, and derived focus.
| Flag | Description |
|---|---|
--json | Output raw JSON |
--quiet | Suppress output |
keepgoing briefing
Get a re-entry briefing for this project. Summarizes session history and recent commits to help you pick up where you left off.
| Flag | Description |
|---|---|
--json | Output raw JSON |
--quiet | Suppress output |
keepgoing log
Browse session checkpoints with rich filtering. Search by date, branch, file, keyword, or view grouped by session.
| Flag | Description |
|---|---|
-n <count> | Number of entries to show (default: 10) |
--since <date> | Show entries after date (ISO, "today", "yesterday", "N days ago") |
--until <date> | Show entries before date |
--branch <name> | Filter by branch ("all" for all branches) |
--follow <file> | Filter by touched file path |
--search <term> | Search in summary, next step, blocker |
--oneline | Compact one-line format |
--stat | Show touched file paths |
--sessions | Group checkpoints by session |
--today | Shorthand for --since today |
--week | Shorthand for --since "last week" |
keepgoing save
Save a checkpoint. Auto-generates a summary and next step from recent git activity. Use -m or -n to override with custom text.
| Flag | Description |
|---|---|
-m, --message <text> | Use a custom summary instead of auto-generating |
-n, --next <text> | Use a custom next step instead of auto-generating |
--force | Save even if a recent checkpoint exists or there are no changes |
keepgoing query
Read stored checkpoint data directly from the SQLite database. Useful for scripting and building custom tooling on top of KeepGoing data.
| Flag | Description |
|---|---|
<subcommand> | One of: checkpoints, session-logs, momentum, signals, decisions, meta |
--limit <n> | Number of entries to return (default: 10) |
--branch <name> | Filter by branch |
--session <id> | Filter by session ID |
--since <date> | Show entries after date (ISO format) |
--cwd <path> | Override the working directory |
keepgoing write
Write activity signals, session logs, checkpoints, or decision records to the SQLite database. Primarily used by integrations and hooks, not for manual use.
| Flag | Description |
|---|---|
<subcommand> | One of: signal, log, checkpoint, decision |
--session <id> | Session ID (required for signal, log, checkpoint) |
--branch <name> | Current branch |
--trigger <type> | Trigger type for logs: manual or auto |
--summary <text> | Summary text (required for log) |
--next <text> | Next step text |
--blocker <text> | Blocker description |
--files <json> | JSON array of touched file paths |
--commits <json> | JSON array of commit hashes |
--data <json> | Decision JSON data (required for decision subcommand) |
--cwd <path> | Override the working directory |
keepgoing doctor
Check storage health for the current project. Verifies the database exists, validates the schema version, detects orphaned sessions, and runs an integrity check.
| Flag | Description |
|---|---|
--json | Output results as JSON |
--cwd <path> | Override the working directory |
keepgoing migrate
Migrate legacy JSON storage to the SQLite database. Converts sessions.json and decisions.json to keepgoing.db and moves the old files to .keepgoing/deprecated/.
| Flag | Description |
|---|---|
--json | Output migration results as JSON |
--cwd <path> | Override the working directory |
keepgoing decisions
View decision history for this project. Shows high-signal architectural and design decisions detected from commits (free users see count; Pro to view full details).
| Flag | Description |
|---|---|
--branch <name> | Filter by branch, or "all" for all branches |
--limit <n> | Number of decisions to show (default: 10) |
keepgoing refine
Refine detected decisions using LLM classification. Processes pending decisions and unscored session logs for improved accuracy. Uses your Anthropic API key if configured, otherwise falls back to Claude CLI (Pro feature).
| Flag | Description |
|---|---|
--dry-run | Show what would be sent without calling the LLM |
--limit <n> | Maximum items to process per run |
--provider <name> | LLM provider to use (default: auto-detect) |
--enable | Enable auto-refinement after every decision detection |
--disable | Disable auto-refinement |
--status | Show current auto-refinement status and provider |
keepgoing setup
Interactive setup wizard. Walks you through configuring KeepGoing for your AI tools, IDE, and shell. Configures Claude Code, GitHub Copilot, Cursor, and/or Windsurf in one go.
| Flag | Description |
|---|---|
[preset] | Start with a tool pre-selected: claude, copilot, cursor, windsurf, vscode |
keepgoing config
Manage global KeepGoing configuration. Currently used to store your Anthropic API key for LLM refinement so you do not need Claude CLI installed.
| Flag | Description |
|---|---|
set api-key <key> | Store an Anthropic API key in global config |
get api-key | Show the stored API key (masked) |
unset api-key | Remove the stored API key |
keepgoing hook install
Install hooks for shell integration, global gitignore, and decision detection. Sets up a shell cd hook, a global gitignore entry for .keepgoing, and a global git post-commit hook for decision detection. Supports zsh, bash, and fish.
| Flag | Description |
|---|---|
--shell <name> | Override shell detection (zsh, bash, fish) |
keepgoing hook uninstall
Remove the shell hook from your ~/.zshrc, ~/.bashrc, or fish config.
| Flag | Description |
|---|---|
--shell <name> | Override shell detection (zsh, bash, fish) |
keepgoing --version
Show the installed CLI version and check for updates.
Hooks
Running keepgoing hook install sets up three things at once.
Step 1: Install hooks
keepgoing hook install Step 2: Reload your shell
source ~/.zshrc # or ~/.bashrc or ~/.config/fish/config.fish Install output:
KeepGoing hook installed in ~/.zshrc.
Global gitignore: .keepgoing added to ~/.gitignore_global
Git post-commit hook: installed at ~/.keepgoing/hooks/post-commit
1. Shell cd hook
Every time you cd into a directory with a .keepgoing/ folder, your last checkpoint is printed automatically.
~ cd ~/projects/my-app
KeepGoing · 3 days ago · Refactored auth middleware to support JWT rotation
2. Global gitignore
Adds .keepgoing to your global gitignore (~/.gitignore_global) so session data never shows up in git status for any repository. No per-repo .gitignore edits needed.
3. Global post-commit hook
Installs a git post-commit hook at ~/.keepgoing/hooks/post-commit that runs decision detection in the background after every commit. This is how Decision Detection works without VS Code open.
The hook runs silently, never blocks your commit, and only writes to .keepgoing/decisions.json when a high-signal commit is detected. Requires a Decision Detection license. Without one, the hook exits immediately with no overhead.
Note: If your system already has core.hooksPath configured (e.g. for Husky or lint-staged), the hook file is saved but not activated automatically. The install output will show the snippet to add to your existing post-commit hook.
For a full breakdown of each hook and what it modifies, see the Git Hooks Setup page.
How it works
The CLI reads and writes the same .keepgoing/ schema used by the VS Code extension. You can use the CLI standalone or alongside the extension.
Checkpoint data is stored in a local SQLite database in your project directory. Nothing is sent to the cloud. If you have legacy JSON data from an older version, run keepgoing migrate to import it.
.keepgoing/keepgoing.db- all checkpoint, signal, and decision data.keepgoing/state.json- last session state.keepgoing/meta.json- project metadata
Pair with your AI tools
The CLI writes checkpoints that AI tools can read via the MCP server.
Get started
Run your first status check in seconds.