Docs

Commands

CLI: Agents ​

Hooks, the MCP server, memory, claims, swarms and agent reports from the CLI.

Run Bumpkit inside your coding agents and coordinate several of them.

MCP server ​

To connect Claude without installing anything, use the hosted connector: claude mcp add --transport http bumpkit https://bumpkit.dev/mcp in Claude Code, or https://bumpkit.dev/mcp as a custom connector in the Claude desktop app. bumpkit mcp connect prints both, and bumpkit mcp connections list and bumpkit mcp connections revoke manage the apps you connected.

Run the built-in server with bumpkit mcp. Your agent starts this command and communicates over stdio. It uses your saved bumpkit login credentials or BUMPKIT_API_KEY, with the same workspace permissions and feature access.

Terminal
bumpkit login
claude mcp add bumpkit -- bumpkit mcp

bumpkit mcp config prints copyable JSON for Cursor, Claude Desktop, and other MCP clients without changing files or including credentials. bumpkit mcp --help explains how to connect. See MCP Server for client configuration and tools.

bumpkit guard ​

Beta, early access. Flag: agent_guard.

Check an agent's work before it finishes or pushes. guard gates the working tree against --base with the policy at the base. As an agent's hook, it sends the agent back with the proven problems or the approval it needs. Run directly, as the git pre-push hook does, a change that only needs approval prints the approval the pull request will need and its dashboard link, then exits 0 so the pull request can be opened; proven problems still exit 1. Every message names the workspace it checked, because approvals recorded in another workspace don't count. When Bumpkit can't be reached or the feature is off, it prints a note and exits 0. With Close the loop on (Beta, flag close_the_loop), it also blocks while fix tasks are open on this branch, even when the gate passes. See Agent Hooks.

Text
bumpkit guard [--base REF] [--hook claude|cursor|codex|gemini|windsurf|cline]
Flag Default Description
--base Where this branch left the default branch; on the default branch itself, HEAD Ref to compare against
--hook claude, cursor, codex, gemini, windsurf or cline to run as that agent's finish hook. codex, gemini, windsurf and cline need the agent_hooks_extended flag.

bumpkit hooks ​

Beta, early access. Flag: agent_guard.

Install the agent and git hooks in this repository. With no flags, hooks install installs the Cursor and git hooks, plus the Claude Code hooks when the repository has a .claude/ directory or a CLAUDE.md. See Agent Hooks.

Text
bumpkit hooks install [--claude] [--cursor] [--git]
Flag Default Description
--claude false Install Claude Code hooks in .claude/settings.json (recall at session start, pause before shell commands, reads and writes, guard when the agent stops) and the MCP server in .mcp.json
--cursor false Install Cursor hooks in .cursor/hooks.json: recall at session start, pause before shell commands and guard when the agent stops
--git false Install a git pre-push hook that runs bumpkit guard. An existing pre-push hook isn't overwritten: add the line bumpkit guard to it yourself.

Beta: Codex, Gemini CLI, Windsurf, Cline and provenance ​

Beta, early access. Flags: agent_hooks_extended, agent_pause, change_provenance.

Text
bumpkit hooks install [--claude] [--cursor] [--git] [--codex] [--gemini] [--windsurf] [--cline] [--provenance [--prompts]]
Flag Default Description
--codex false Install Codex hooks in .codex/hooks.json (recall at session start, pause before shell commands and patches, guard before the agent stops) and the MCP server in .codex/config.toml
--gemini false Install Gemini CLI hooks and the MCP server in .gemini/settings.json: recall at session start and the release check after each agent turn
--windsurf false Install Windsurf hooks in .windsurf/hooks.json (the release check before Cascade runs git push), the MCP server in your user config, and the git pre-push hook
--cline false Install Cline hooks in .clinerules/hooks (recall when a task starts, the release check before attempt_completion), the MCP server in the Cline CLI settings, and the git pre-push hook
--provenance false Also record AI change provenance from each agent's sessions and tool calls (opt-in)
--prompts false With --provenance, also send a redacted summary of each prompt (opt-in)

With agent pause, the Claude Code hooks also run bumpkit pause --hook claude before each shell command, read and write.

Beta: open a pull request that adds the hooks ​

Beta, early access. Flag: agent_hooks_pr. Owners, admins and policy admins.

Text
bumpkit hooks pr [--repo OWNER/NAME] [--json]

Opens the Add Bumpkit agent hooks pull request through the GitHub App. It adds the Claude Code, Cursor and Codex hooks with provenance recording (no prompt summaries) and the MCP servers in .claude/settings.json, .mcp.json, .cursor/hooks.json, .codex/hooks.json and .codex/config.toml, merged into the files already on the default branch, byte for byte what bumpkit hooks install --claude --cursor --codex --provenance writes. Running it again returns the open pull request, and says so when the default branch already has the hooks. --repo defaults to the origin remote. See Agent Hooks.

bumpkit memory ​

Beta, early access. Flag: codebase_memory.

What your team and agents learned about this code. See Agent Controls.

Subcommand Usage Description
add bumpkit memory add TEXT [flags] Save a decision, pitfall, note or incident about a path
list (alias ls) bumpkit memory list [PATH] List memories for the repository or a path
forget bumpkit memory forget MEMORY_ID Delete a memory
Flag Default Description
--repository The origin remote Repository URL (all memory subcommands)
--kind note memory add: note, decision, pitfall or incident
--path The whole repository memory add: file or directory it's about
Terminal
bumpkit memory add "Never call the billing API from a migration" --kind pitfall --path db/migrations

Beta: memory approval ​

Beta, early access. Flag: memory_approval.

Subcommand Usage Description
pending bumpkit memory pending List memories agents saved that wait for a person's approval
approve bumpkit memory approve MEMORY_ID Approve a pending memory so agents recall it
reject bumpkit memory reject MEMORY_ID Reject a pending memory; it is never recalled

bumpkit recall ​

Beta, early access. Flag: codebase_memory.

Print what your team learned about this code: approved lessons first (Beta, flag swarm_lessons), then memories for the repository or a path, and the finding kinds recent releases were flagged for. As a session start hook, it hands the same text to the agent as context. It exits 0 unless a flag is wrong.

Text
bumpkit recall [--path PATH] [--hook claude|cursor|codex|gemini|cline]
Flag Default Description
--hook claude, cursor, codex, gemini or cline to run as that agent's session start hook. codex, gemini and cline need the agent_hooks_extended flag.
--path The whole repository A file or directory

bumpkit pause ​

Beta, early access. Flag: agent_pause.

Check a command before an agent runs it: allow, ask a human, or deny. As a hook, pause reads the tool call from standard input and replies in the agent's hook format, always exiting 0. Run directly, it checks COMMAND, prints allow or the decision and reason, and exits 1 unless the command is allowed. Ask and deny decisions are recorded in Bumpkit; allowed commands aren't. With agents: budgets on (Beta, flag agent_budgets), the hooks also deny file writes outside the paths the agent is allowed, with the reason shown to the agent.

When you're not signed in, the feature is off for your workspace, or Bumpkit can't be reached, pause still checks the command, with the built-in local rules plus the repository's agent: section, and records nothing. See Agent Controls.

Text
bumpkit pause [--hook claude|cursor|codex] [COMMAND...]
Flag Default Description
--hook claude, cursor or codex to run as that agent's hook before a tool or shell command runs
Terminal
bumpkit pause rm -rf build/

bumpkit provenance ​

Beta, early access. Flag: change_provenance.

Turn on, turn off or read the record of who or what made a change: the agent, its version and model, the session, the tools it used and the human sponsor. See Agent Hooks.

Text
bumpkit provenance enable [--prompts] | disable | record --hook AGENT [--prompts] | show CHECK_ID | attest CHECK_ID
Subcommand Description
enable Add provenance recording to the agent hooks already installed here. --prompts also sends a redacted summary of each prompt (opt-in).
disable Remove provenance recording from the installed hooks
record Record one hook event. --hook names the agent whose hook payload is on stdin: claude, cursor, codex, gemini, windsurf or cline.
show CHECK_ID Print a check's provenance as JSON
attest CHECK_ID Print a check's provenance attestation as JSON

bumpkit claim ​

Beta, early access. Flag: swarm_claims.

Lease a migration number, file, symbol, route, flag or env var before you use it, so other agents in the swarm don't take it at the same time. KIND is migration, path, symbol, route, flag, env or other. Leases expire after --ttl unless renewed with bumpkit renew. Release them with bumpkit unclaim. bumpkit claim migration without a number hands out the next free migration number, counting main, open branches, pull requests and other claims. See Agent Swarms.

Text
bumpkit claim KIND [RESOURCE] [flags]
Flag Default Description
--agent $BUMPKIT_AGENT_ID, or cli Who holds the lease
--dir db/migrations The migrations directory, for claim migration
--note Why you need it, shown to other agents
--repository The origin remote owner/name
--session $BUMPKIT_SESSION, or this host and shell Which run of the agent
--ttl 30m; 24h for claim migration without a number How long the lease lasts before it must be renewed (at most 24h)
Terminal
bumpkit claim path services/orders/helpers_test.go --ttl 2h

bumpkit claims ​

Beta, early access. Flag: swarm_claims.

List the active claims in this repository.

Flag Default Description
--kind Only claims of this kind
--mine false Only claims held by this agent ($BUMPKIT_AGENT_ID)
--repository The origin remote owner/name

bumpkit renew ​

Beta, early access. Flag: swarm_claims.

Extend a claim you hold.

Text
bumpkit renew CLAIM_ID [flags]
Flag Default Description
--agent $BUMPKIT_AGENT_ID, or cli Who holds the lease
--session $BUMPKIT_SESSION, or this host and shell Which run of the agent
--ttl 30m How much longer the lease lasts

bumpkit unclaim ​

Beta, early access. Flag: swarm_claims.

Release a claim you hold, so other agents can use the resource.

Text
bumpkit unclaim CLAIM_ID [flags]
Flag Default Description
--agent $BUMPKIT_AGENT_ID, or cli Who holds the lease
--session $BUMPKIT_SESSION, or this host and shell Which run of the agent

bumpkit intent ​

Beta, early access. Flag: conflict_prediction.

Declare what you will touch and see which branches, claims and agents it collides with. Bumpkit compares your declared paths and symbols, or your branch, with open pull requests, active claims and other agents' intents, and names each overlap. With no --paths, --symbols or --calls, the CLI reads your branch's changes since --base itself. It exits 1 when it predicts a conflict.

Text
bumpkit intent [flags]
Flag Default Description
--adds Symbols you will add, as pkg.Func
--agent $BUMPKIT_AGENT_ID, or cli Who holds the lease
--base origin/HEAD What your branch started from, when reading changes locally
--branch Your branch, compared once it is pushed
--calls Symbols your change calls, as pkg.Func
--paths Files or directories you will change
--repository The origin remote owner/name
--session $BUMPKIT_SESSION, or this host and shell Which run of the agent
--symbols Symbols you will change, as pkg.Func
--ttl 2h How long other agents see this intent
Terminal
bumpkit intent --paths services/orders/reserve.go --symbols orders.Reserve

bumpkit merge-plan ​

Beta, early access. Flag: merge_planning.

A safe merge order for the open pull requests, and what main broke in each. Pull requests with the fewest overlaps merge first, and stacked pull requests follow their base. With --recheck, each waiting pull request is checked against main for signatures main changed that it uses. Needs the Bumpkit GitHub App.

Flag Default Description
--recheck false Re-check every waiting pull request against main now
--repository The origin remote owner/name

bumpkit stack ​

Beta, early access. Flag: stacked_prs.

Show stacked pull requests, their merge order and each one's decision. A pull request whose base branch is another open pull request's head branch is stacked on it. Bumpkit tracks stacks from GitHub App events, checks each pull request on its own changes against its parent's head, and re-checks it when the parent's head moves or GitHub retargets it. Needs the Bumpkit GitHub App.

Subcommand Usage Description
list bumpkit stack list --repository OWNER/REPO List the repository's stacks in merge order with each pull request's decision
show bumpkit stack show NUMBER --repository OWNER/REPO Show one pull request's stack, its position and what must merge first
Flag Default Description
--repository The origin remote owner/name
--json false Print the stack as JSON

A decision shows as current only when it was saved for the pull request's exact head and base commits. Otherwise the pull request reads Not checked at this head and base, and no decision is implied.

Terminal
bumpkit stack list --repository acme/shop
bumpkit stack show 131 --repository acme/shop --json

bumpkit contracts ​

Beta, early access. Flag: contract_alerts.

Alert branches when an internal function, method or type they call changes. See Agent Swarms.

Subcommand Usage Description
sync bumpkit contracts sync [--base REF] [flags] Record this push's signature changes and the symbols this branch calls
alerts bumpkit contracts alerts [flags] List contract alerts for a branch
ack bumpkit contracts ack ALERT_ID Acknowledge an alert once the call sites are updated
close bumpkit contracts close [--branch NAME] [flags] Stop tracking a merged or abandoned branch

Run contracts sync on every push, in CI or by an agent. Other open branches calling a changed symbol's old signature are alerted by pull request comment, webhook and MCP. Alerts for this branch are printed, and the command exits 1 when there are any.

Flag Default Description
--base The pull request base, the push's before, or the merge base with origin Where the change starts
--branch The current branch Branch
--owner BUMPKIT_AGENT_ID, else this API key Who to alert for this branch
--pr The one GitHub Actions is running for This branch's pull request
--repository The origin remote Repository

contracts alerts takes --all (include acknowledged alerts), --branch and --repository. contracts close takes --branch and --repository.

bumpkit coverage ​

Beta, early access. Flag: verified_reports.

Upload CI coverage as evidence for agent reports.

Subcommand Usage Description
upload bumpkit coverage upload --profile cover.out [flags] Upload a Go coverage profile for a commit, signed by the CI job's OIDC token

In GitHub Actions with permissions: id-token: write, the upload carries the job's OIDC token, so Bumpkit knows the profile came from CI for that repository and SHA, not from an agent. Bumpkit computes total coverage, and diff coverage against each report's diff.

Flag Default Description
--diff-percent Diff coverage as measured by CI (trusted only with an OIDC token)
--no-oidc false Upload with the API key only, without the CI job's OIDC token
--profile cover.out The Go coverage profile
--repository The origin remote Repository
--sha HEAD The commit the profile measured

bumpkit agent-report ​

Beta, early access. Flag: verified_reports.

Report what an agent claims about a commit and have Bumpkit verify each claim. Bumpkit checks each claim against the GitHub checks for that exact SHA, coverage uploaded by CI, and the real diff, and answers verified, contradicted or unverifiable per claim. The command exits 1 when any claim is contradicted, so an orchestrator can trust the exit code instead of the agent's summary.

Text
bumpkit agent-report [claims] [flags]
Flag Default Description
--agent BUMPKIT_AGENT_ID The agent making the claims
--base The pull request's base, else the parent The commit the change starts from
--branch The current branch Branch
--coverage Claimed total coverage percent
--diff-coverage Claimed coverage percent of changed lines
--file A file the commit changes (repeatable; claims the exact set)
--files-count Claimed number of files changed
--lint-clean false Claim lint is clean
--migration A migration the commit adds (repeatable)
--no-migrations false Claim the commit adds no migrations
--pr The one GitHub Actions is running for Pull request number to comment on
--repository The origin remote Repository
--sha HEAD The full commit SHA the claims are about
--tests-pass false Claim the tests pass (--tests-pass=false claims they fail)
Terminal
bumpkit agent-report --tests-pass --diff-coverage 100 --lint-clean --no-migrations

bumpkit test ​

Beta, early access. Flag: flaky_tests.

Flaky test registry and regression evidence: upload results and triage failures.

Subcommand Usage Description
upload bumpkit test upload --file results.xml [flags] Upload a CI run's test results (JUnit XML or go test -json)
triage bumpkit test triage [--file results.json] [--test NAME] [flags] Say whether failing tests are known flaky or likely real, with history
flaky bumpkit test flaky [flags] List known flaky tests
expected bumpkit test expected [--base REF] [--head REF] List the tests a change's blast radius expects, and why (Beta, flag regression_evidence)
attest bumpkit test attest --file results.xml [--base REF] [--head REF] Upload test results and the tests expected for this commit, attested by the CI job (Beta, flag regression_evidence)
evidence bumpkit test evidence [--sha SHA] [--pull-request N] Show which expected tests passed, failed or didn't run on a commit (Beta, flag regression_evidence)

test upload flags:

Flag Default Description
--attempt GITHUB_RUN_ATTEMPT The run attempt
--branch The current branch Branch
--file JUnit XML or go test -json output
--format Detected junit or go-test-json
--repository The origin remote Repository
--run-key GITHUB_RUN_ID Identifies the CI run
--sha HEAD The commit the tests ran on

test triage reads failing tests from --test names or from the run's output in --file. It exits 1 when any failure is likely real, 0 when every one is known flaky. It takes --file, --format, --repository, --sha (the commit the tests failed on) and --test (a failing test's name, like pkg/path.TestName, repeatable). test flaky takes --limit (default 100, max 500) and --repository.

test expected takes --base (default: the pull request's base, else the latest tag), --head (default: the pull request's head, else HEAD) and --policy. test attest takes the same flags, plus --file, --format (junit or go-test-json, default detected) and --repository. It exits 0 when tests fail, because the gate reads them; it exits 1 when the upload fails. test evidence takes --repository, --sha and --pull-request, which counts merge-commit attestations only from that pull request. See Regression evidence.

bumpkit testdb ​

Beta, early access. Flag: test_isolation.

Lease an isolated Postgres database for one agent run. The CLI creates each lease on your test server, the one in TEST_DB_ADMIN_URL, copied from TEST_DB_TEMPLATE when set, and refuses any server whose host isn't in TEST_DB_ALLOWED_HOSTS. Bumpkit records the lease. Once its TTL passes, the next testdb lease or a testdb sweep drops it; nothing drops it on a timer, so run testdb sweep on a schedule if leases can sit idle. The CLI only ever creates or drops databases named bk_lease_*, and caps the active leases on the server (TEST_DB_MAX_LEASES, default 20). See Beta variables.

Subcommand Usage Description
lease bumpkit testdb lease [--ttl 1h] [flags] Create a test database and print its URL
list bumpkit testdb list List this workspace's leased test databases
release bumpkit testdb release NAME Drop a leased test database now
sweep bumpkit testdb sweep Drop every expired leased database on the test server

testdb lease flags:

Flag Default Description
--agent BUMPKIT_AGENT_ID The agent run it's for
--ttl 1h How long the lease lasts before a sweep may drop it (1m to 24h)
Terminal
export DATABASE_URL=$(bumpkit testdb lease --agent "$BUMPKIT_AGENT_ID")
go test ./...

bumpkit lessons ​

Beta, early access. Flag: swarm_lessons.

Rules every agent in the swarm follows, proposed by agents and approved by people. A lesson has a kind (practice, pitfall, decision, or dropped for something the team chose not to build), applies to paths and areas, and is versioned: --supersedes proposes a new version, and approving it supersedes the old one. Approved lessons reach agents first in bumpkit recall, the session start hooks and the lessons MCP tool, capped at 20 lessons and about 4,000 characters. Pending, rejected and retired lessons never reach agents.

A key can't approve or reject a lesson proposed with a key of the same person, or with a key that was since deleted, and a key that isn't tied to a person can't approve anything. Review those in the dashboard inbox, or ask a teammate to use their key. The proposer's name comes from BUMPKIT_AGENT_ID, then BUMPKIT_AGENT.

Subcommand Usage Description
propose bumpkit lessons propose TEXT [flags] Propose a lesson (up to 1000 characters); it reaches agents once a person approves it
list (alias ls) bumpkit lessons list [flags] List approved lessons, or others with --status
approve bumpkit lessons approve LESSON_ID Approve a proposed lesson so every agent gets it
reject bumpkit lessons reject LESSON_ID Reject a proposed lesson
retire bumpkit lessons retire LESSON_ID --reason TEXT Retire an approved lesson that no longer holds; the reason (at least 10 characters) is kept with it

Every subcommand takes --repository (repository URL, default: the origin remote).

Flag Subcommand Default Description
--area propose, list An area it's about, like migrations, tests, auth, api, ui or billing (repeatable on propose)
--kind propose practice practice, pitfall, decision or dropped
--path propose, list The whole repository A path or glob it applies to (repeatable on propose)
--supersedes propose The lesson ID this is a new version of
--status list approved approved, pending, retired, superseded, rejected or all
--reason retire Why it no longer holds
Terminal
bumpkit lessons propose "Every migration runs inside a transaction; never edit a migration that already shipped." --kind pitfall --path db/migrations --area migrations
bumpkit lessons list --status pending

bumpkit tried ​

Beta, early access. Flag: tried_before.

Has this been tried? Before you build something, describe it, name the paths and symbols it touches, or both. Bumpkit searches release history for matching reverts, removed features and APIs, dropped decisions and past gate blocks. Each result links to its release and, for GitHub repositories, the commit.

Text
bumpkit tried [DESCRIPTION] [flags]
Flag Default Description
--path A path the change touches (repeatable)
--repository The origin remote Repository URL
--symbol A function, type or route it touches (repeatable)
Terminal
bumpkit tried "realtime websocket notifications" --path services/notify --symbol Stream

bumpkit inbox ​

Beta, early access. Flag: approval_inbox.

One approval inbox for the swarm, ranked by risk (low, medium or high): gate decisions that need approval or failed, paused agent commands, memories waiting for approval and lesson proposals. Items are named KIND:ID, with kind gate, command, release_batch, release_publish, memory or lesson. The inbox needs a key tied to a person, and every decision is audited with the approver.

Subcommand Usage Description
list (alias ls) bumpkit inbox list [--filter all|releases|commands|context] What waits for a person, ranked by risk. Merged, closed and superseded releases are left out
approve bumpkit inbox approve [KIND:ID] [--note TEXT] [--no-browser] [--timeout 10m] Approve one item
deny bumpkit inbox deny [KIND:ID] [--note TEXT] [--no-browser] [--timeout 10m] Deny or reject one item
batch bumpkit inbox batch KIND:ID... --confirm "approve N low-risk items" Approve several low-risk items at once

Gate items (gate:ID) and paused commands (command:ID) need a person signed in to the dashboard, on the Approvals page. With an API key, approve and deny print a 403 HUMAN_APPROVAL_REQUIRED refusal with the link. On that page, approving a gate item needs a note of at least 10 characters and the override role (owners, admins and policy admins). It isn't an approval vote: it records a break-glass override of that exact commit. The gate's approval rules, such as "anyone except the author", don't count it, and someone else reviews it later with bumpkit override review. The pull request's GitHub check re-runs with the override right away. Gate items can't be denied from the inbox. A gate run on a local diff with no commit SHA doesn't appear; CI and API gate runs at a full SHA do.

A release draft (release_batch:ID) runs the same browser vote as bumpkit release approve ID or bumpkit release deny ID: it prints a link and a one-time code, and you confirm in your browser. Approving an approved release (release_publish:ID) publishes it, like bumpkit release publish ID.

Without KIND:ID, approve and deny list what's waiting. In a terminal you pick one by number, and a gate item asks for its note. Otherwise each item is printed with its exact command and the command exits 1.

batch approves up to 50 low-risk items, and --confirm must be exactly approve N low-risk items (item for one). The server checks this too, and refuses medium- and high-risk items: decide those one at a time.

Terminal
bumpkit inbox list

bumpkit agents ​

Beta, early access. Flags: agent_budgets (spend, usage, violations), agent_track_records (records).

Agent budgets, scopes, violations and track records. Budgets and scopes live under agents: in bumpkit.yml, keyed by an agent id or a glob: max_open_prs, max_changed_lines, paths_allow, paths_deny, areas_deny, spend_limit (US dollars per calendar month, UTC) and on_violation (block or approve). The gate checks every agent on a change, and each broken limit becomes a reason that fails the gate or asks for approval. See the bumpkit.yml Reference.

Subcommand Usage Description
spend bumpkit agents spend --agent ID --usd AMOUNT [flags] Record what an agent spent, counted against spend_limit
usage bumpkit agents usage Open pull requests, open changed lines and this month's spend per agent
violations bumpkit agents violations [--limit 50] Recent times an agent went outside its budget or scope (max 500)
records bumpkit agents records [--days 90] Each agent's track record by work type: releases, clean, reverted, fixed up within 7 days, blocked by the gate and failed required checks, with a score

agents spend flags:

Flag Default Description
--agent BUMPKIT_AGENT_ID, then BUMPKIT_AGENT The agent id
--note What it was for
--repository The repository the work was for
--usd Amount in US dollars

Track records count checks of the same commits as one release, by work type (tests, migrations, auth, api, ui). gate.require_approval: [{agent_track_record_below: 0.8}] asks a person to approve changes from agents below the bar.

Terminal
bumpkit agents spend --agent claude --usd 7.50 --note "model tokens for the refund task"
bumpkit agents usage
bumpkit agents records --days 90

↑↓ to move, Enter to open