ControlKeel
ControlKeel is a governance and control plane for AI agent-led software delivery, providing deterministic validation, sandboxed execution, cost control, memory, review gates, and observability across AI coding hosts.
Validation & Execution
ck_validate: Check code, config, shell commands, or text against governance rules (trust boundaries, domain packs) before executionck_execute_code: Run generated JavaScript or Python in a Docker sandbox with network/filesystem restrictions and dry-run support
Context & Files
ck_context/ck_context_pack: Fetch mission state, findings, budget, proof summaries, and build compact context bundles for agentsck_fs_ls,ck_fs_read,ck_fs_find,ck_fs_grep: Read-only browsing and searching of the bound project root
Git Integration
ck_git_diff: Generate diffs with CK validation appliedck_git_commit: Validate commit messages before committingck_git_status: Get git status correlated with findings
Governance & Review
ck_finding: Persist findings with severity and ruling (allow/warn/block/escalate)ck_review_submit/ck_review_status/ck_review_feedback: Submit plans or diffs for human review, check status, and approve/denyck_regression_result: Ingest external regression test evidence into proof bundles
Memory & Goals
ck_memory_search/ck_memory_record/ck_memory_archive: Store, retrieve, and archive typed governed memory (decisions, findings, proofs)ck_goal: Record, list, and update durable goals across sessions
Budget & Cost Control
ck_budget: Estimate/commit costs against session and daily budgets with circuit breakersck_cost_optimizer: Get cost optimization suggestions or compare agent pricingck_token_audit: Audit rule files and skills for token bloat and duplicates
Routing & Delegation
ck_route: Recommend the best AI agent for a task based on security tier, budget, and task typeck_delegate: Hand off governed tasks to another agent in auto, embedded, handoff, or runtime mode
Deployment & Observability
ck_deployment_advisor: Analyze project stack, suggest platforms, and generate CI/CD or Docker config filesck_outcome_tracker: Record session outcomes and retrieve leaderboard data for reinforcement learningck_mcp_discover: Auto-discover tools from external MCP servers
Integrates with Amp as a plugin-native host for governing agent-generated software delivery, providing MCP configuration and companion files.
ControlKeel
Turn the way your team works into enforceable memory for AI agents. - @arya_minus
ControlKeel is an agent control plane for day-to-day governed engineering. Through observation, findings and evaluation, it learns your intent rules, review taste and delivery habits, turning them into typed memory, policy checks and proof bundles. CK sits between your coding agents and production as a portable "company brain": comparing intended delivery against actual delivery and turning raw agent intent into policy-validated tasks.
If you're using an AI agent today, you probably have an *.md telling it how to behave. But a rules/specs file is just a promise made to the model. ControlKeel enforces the output. Beyond just catching bugs, CK solves the "Unknown Unknowns" problem: having to re-explain your domain knowledge in every single session.
Product loop
Capture intent and policy — scope, risk, budget, domain pack, and human taste become CK state.
Validate agent output — deterministic checks and optional advisory review produce findings before risky work reaches main.
Gate only when needed — humans approve high-impact actions when intent, risk, or policy requires it.
Persist evidence — findings, reviews, proofs, memory, cost, and task outcomes survive host switches.
Improve with evals — traces and recurring failures become bounded regression evidence for specific suites and subjects.
The operating rule is simple: spend tokens on discovery, not rediscovery. Recurring behavior moves through a human-gated deterministic promotion path; once its regression evidence passes, checks, APIs, CLIs, or workflows handle the known case and agents handle only exceptions and genuinely new uncertainty.
ControlKeel transforms your domain knowledge from "raw" intent and "shelfware" documentation into a living system that remembers, enforces, and evolves.
Related MCP server: mcp-gatekeeper
Quick start
One-line setup via your agent
Copy/paste this into your agent (OpenCode, Codex, Claude, or another supported host):
Set up ControlKeel for this repository. Read and follow https://raw.githubusercontent.com/aryaminus/controlkeel/main/README.md, https://raw.githubusercontent.com/aryaminus/controlkeel/main/docs/getting-started.md, https://raw.githubusercontent.com/aryaminus/controlkeel/main/docs/support-matrix.md, and https://raw.githubusercontent.com/aryaminus/controlkeel/main/docs/agent-integrations.md. Install ControlKeel if missing, run `controlkeel setup`, detect this agent host, attach the strongest supported path with `controlkeel attach <host>`, then run `controlkeel attach doctor`, `controlkeel provider doctor`, `controlkeel status`, `controlkeel findings`, and the host-native MCP check. If CK is available only as MCP, call `ck_attach` for this host. Apply only safe local fixes and redact secrets from logs. Pause and ask before continuing if the host needs workspace trust, manual provider configuration, a restart after attach/plugin changes, or a plan-review approval that cannot auto-wait. Ensure the project is trusted and restart the host after attach/plugin changes.CLI install
Install the CLI:
brew tap aryaminus/controlkeel && brew install controlkeel
# or
npm i -g @aryaminus/controlkeel
# or
curl -fsSL https://github.com/aryaminus/controlkeel/releases/latest/download/install.sh | shWindows PowerShell:
irm https://github.com/aryaminus/controlkeel/releases/latest/download/install.ps1 | iexFirst governed run:
controlkeel
controlkeel setup
controlkeel attach opencode # project scope by default; use another supported host as needed
controlkeel attach doctor
controlkeel provider doctor
controlkeel status
controlkeel findingsRun setup and attach from the repository you want to govern. Project scope writes host files only inside that repository. --scope user writes host-level files under your user configuration only for targets that explicitly support user scope; it does not turn project binding or proof state into global state.
For the complete first-run path, use docs/getting-started.md. For host truth, use docs/support-matrix.md and docs/agent-integrations.md.
Benchmark-backed evidence
ControlKeel includes a persisted benchmark engine. Current user-facing evidence is bounded to the named suite, subject, and scoring definition below; docs/benchmarks.md is the canonical reference for full tables, caveats, JSON exports, and agent-host protocols.
Verified with-vs-without-CK baseline (host_comparison_v1, 12 risky scenarios)
Verified with ControlKeel 0.3.45:
Risky suite
host_comparison_v1:null_policy_baselinecaught 0/12;controlkeel_validatecaught 12/12, blocked 9/12, and hit expected rules 9/12 with median deterministic validation time 52 ms, 0 provider tokens.Paired benign suite
benign_baseline_v1:controlkeel_validateproduced 0/10 catches, 0/10 blocks, FPR 0.000, median deterministic validation time 42 ms, 0 provider tokens.
Read the numbers precisely: deterministic scanner evidence is not the same as model-backed agent-host evidence. Reproduction commands and the OpenCode/Copilot/Claude/Codex comparison protocol live in docs/benchmarks.md.
What ships today
Local governance: CLI, the full local stdio MCP tool set, project binding, host attach/export bundles, scanner validation, findings, reviews, proof bundles, budgets, and typed memory.
Host and runtime support: native attach for supported hosts, runtime exports for headless/outer-loop systems, a narrower OAuth-scoped hosted MCP set, minimal A2A, and fallback validation/proxy paths.
Team/project operations: org membership, invitations, workspace GitHub repo bindings, service accounts, webhooks, workspace tool policy, and policy-set APIs.
Cloud evidence paths: opt-in cloud telemetry, workspace keys, cloud run packages, runtime callbacks, and dormant-until-configured bidirectional sync for findings, reviews, digests, and memory records.
Observability loop: timelines, memory quality, costs, trends, problem clusters, eval candidates, benchmark drafts/history, and promotion advisories.
Docs map
docs/README.md — documentation map by job
docs/getting-started.md — install to first finding
docs/support-matrix.md — canonical host/protocol inventory
docs/agent-integrations.md — integration mechanisms and support tiers
docs/benchmarks.md — benchmark scoring, metadata, and claim discipline
docs/observability-feedback-loop.md — local evidence-to-regression loop
docs/control-plane-claim-matrix.md — README claim-to-test matrix for governance, memory, cloud sync, and human gates
docs/api-reference.md and docs/cli-reference.md — code-aligned surfaces
docs/packages.md — package and distribution catalog
docs/self-hosting.md — self-host deployment guidance
Development
mix setup
mix phx.server
mix test
mix precommitPhoenix + Ecto on SQLite. Uses Req for HTTP. Single-binary builds ship through Burrito and GitHub Releases.
Available Tools
55 toolsck_attachA
Wire ControlKeel into the current agent host (Claude Code, Cursor, Codex, OpenCode, etc.). Closes the gap for users who installed ControlKeel via a one-line MCP-add command but skipped controlkeel attach <host>. Installs the host-specific hooks (SessionStart, PreToolUse, PostToolUse, UserPromptSubmit), skills directory, slash commands, AGENTS.md/CLAUDE.md preamble, and subagent profiles for the requested host. Idempotent — re-running refreshes artifacts to the current version. Writes only inside project_root; no network egress. Call this once after a one-line MCP install when the host lacks ControlKeel hooks/skills. Use ck_mcp_discover first if unsure which host ID to pass.
Inputs: host (required), scope, project_root. Returns: host, lines, status, next_steps
ck_budgetA
Estimate, record, or check the cost of an agent operation against session and daily spend budgets. Three modes: estimate (read-only, returns headroom and projected cost); commit (write — deducts estimated_cost_cents from the session budget); status (read-only, returns remaining budget). For commit mode: pass session_id, estimated_cost_cents, provider, model, input_tokens, and output_tokens. Pass include_token_overhead: true with project_root to attach a token overhead audit (rule files, skill duplicates, tool schemas) to the response. Check ck_budget before expensive multi-agent work or large model calls. Use ck_cost_optimizer for model price comparisons without recording spend.
Inputs: session_id (required), mode, tool, model, +10 more. Returns: mode, decision, session_id, headroom_cents, +4 more
ck_checkpoint_createA
Create a workspace checkpoint capturing git state, workspace context, and metadata for migration or rollback.
Inputs: task_id (required), type, summary, created_by, +1 more. Returns: type, summary, created_at, checkpoint_id
ck_checkpoint_listBRead-onlyIdempotent
List all checkpoints for a session, optionally filtered by type.
Inputs: type, limit, session_id. Returns: total, checkpoints
ck_checkpoint_restoreBDestructive
Restore session state from a previous checkpoint, updating session metadata with checkpoint information.
Inputs: checkpoint_id (required), strict, session_id. Returns: summary, restored, checkpoint_id
ck_contextARead-onlyIdempotent
Fetch the full governed session state: mission, budget, active findings, proof summary, planning context, workspace snapshot, drift signals, recent transcript events, resume packet, and ControlKeel instruction hierarchy. Read-only. detail_level compact (default) returns a token-efficient summary; use full only when raw workspace, resume, or transcript payloads are required. session_id defaults to the active bound session; pass project_root to resolve it automatically. Call ck_context at the start of every task to reacquire state. Prefer ck_context_pack when you need a focused, citation-enriched bundle for a specific retrieval query rather than the full session snapshot.
Inputs: task_id, session_id, detail_level, project_root. Returns: precedent, risk_tier, session_id, detail_hint, +27 more
ck_context_packARead-onlyIdempotent
Build a compact, citation-enriched context bundle for the current session and task by combining task facts, proof state, resume highlights, and ranked memory excerpts. Read-only. query is an optional retrieval query; when omitted, ControlKeel synthesizes one from the current task title and session context. top_k controls how many memory hits to include (default 5). detail_level compact (default) keeps the bundle token-efficient. Prefer ck_context_pack over ck_context when you need a focused, query-driven bundle for a specific sub-task rather than the full session snapshot. Use ck_context at the start of a session for full mission state; use ck_context_pack mid-task to fetch targeted prior knowledge.
Inputs: query, top_k, task_id, session_id, +2 more. Returns: query, task_id, hit_count, count_only, +9 more
ck_copilotA
Real-time collaborative channel where human actions stream to the agent. Build software for humans and agents to use together — agents can see when a human is viewing, editing, or approving. Modes: subscribe (receive events), publish (emit an event), presence (who is active), history (recent events).
Inputs: session_id (required), mode, actor, limit, +3 more. Returns: mode, events, presence, published
ck_cost_optimizerARead-onlyIdempotent
Get cost optimization suggestions or compare AI provider/model prices for a task. Read-only — no budget records are written (use ck_budget to record actual spend). Two modes: suggest returns optimization tips based on recent session spending patterns; compare returns a side-by-side price breakdown for the given task. For suggest mode, pass session_id. For compare mode, pass task_description and estimated_tokens along with top_provider and top_model as the baseline. Use ck_cost_optimizer before choosing a model for expensive multi-agent work; use ck_budget to record and enforce spend limits.
Inputs: mode (required), spending, top_model, session_id, +3 more. Returns: mode, comparisons, suggestions
ck_delegateA
Hand off a governed task or session to another AI agent, transferring governance context (findings, budget, proofs) to the target. Mutates session state to reflect the delegation. Four modes: auto (ControlKeel picks the best agent), embedded (inline sub-agent), handoff (transfer session ownership), runtime (delegate to a pre-configured runtime agent). agent is the target agent ID (e.g., claude, opencode, cursor). Call ck_route first to identify the best agent, then ck_delegate to transfer. Prefer ck_route when you only need a recommendation without transferring; prefer ck_delegate when you are ready to hand off execution.
Inputs: mode, agent, task_id, session_id, +1 more. Returns: mode, agent, status, result_ref, +3 more
ck_deployment_advisorA
Analyze the project stack and suggest deployment platforms, or generate CI/CD and Docker configuration files. Three modes: analyze (read-only, returns platform recommendations based on detected stack); generate_files (write operation, creates Dockerfile and CI/CD configs in the project); dns_guide (read-only, returns DNS setup instructions for the recommended platform). project_root is required. Set dry_run: true with generate_files to preview what would be created without writing files. Use ck_deployment_advisor before deploying a new project or when setting up CI/CD for the first time. For budget and cost checks before deployment, use ck_budget.
Inputs: mode (required), project_root (required), dry_run. Returns: mode, platforms, files_created, dns_instructions
ck_execute_codeA
Execute generated code only inside a configured non-local sandbox. Defaults to Docker, denies network/filesystem/secrets/shell/deploy, validates source first, and supports dry_run for planning.
Inputs: code (required), dry_run, sandbox, task_id, +8 more. Returns: output, policy, allowed, command, +7 more
ck_experience_indexARead-onlyIdempotent
List recent prior sessions in the same workspace and the read-only experience artifacts available for each run. Pass query for freeform keyword search across session titles, task titles, and finding descriptions — useful for questions like 'has this deployment pattern caused a blocked finding before?'
Inputs: query, session_id, project_root, session_limit, +1 more. Returns: total, sessions
ck_experience_readARead-onlyIdempotent
Read one prior-run artifact such as a session summary, audit log, trace packet, or proof summary from the workspace experience archive.
Inputs: artifact_type (required), task_id, session_id, project_root, +1 more. Returns: data, artifact_type
ck_experience_searchARead-onlyIdempotent
Freeform full-text search across findings and tasks within the current workspace. Returns ranked results with citations. Useful for questions like 'has this deployment pattern caused a blocked finding before?' or 'what did we do about the SQL performance issue?'
Inputs: query (required), limit, session_id, project_root. Returns: total, results
ck_external_serviceA
Track and govern agent interactions with external SaaS APIs. Rate limits per service, cost attribution, and PII redaction. Modes: record (log an interaction with auto-redaction), summary (aggregated view per service), rate_limit_status (current rates against limits), top_services (ranked by volume and cost).
Inputs: session_id (required), mode, limit, method, +8 more. Returns: mode, summary, recorded, services, +1 more
ck_failure_clustersARead-onlyIdempotent
Cluster recurring failure modes across recent session traces in the same workspace and return reusable eval candidates.
Inputs: session_id, project_root, session_limit, same_domain_only. Returns: clusters, eval_candidates
ck_findingA
Record or disposition a governed finding. mode=create (default) persists a finding with a ruling decision (allow, warn, block, escalate_to_human); findings are the durable audit trail in ControlKeel. mode=resolve|dismiss|escalate disposition EXISTING findings so the agent that created them can also clear them: pass finding_id for a single finding, or rule_id/category/status to bulk-disposition all matching active findings in the session (resolve->approved, dismiss->rejected, escalate->escalated). Write operation. For create, required fields are session_id, category, severity, rule_id, plain_message; decision defaults to warn, use allow for an approved exception (which also auto-resolves matching open/blocked findings). Returns finding_id + status for create, or disposed_count + disposed_finding_ids for disposition. Use ck_finding to record and clear policy findings; use ck_memory_record for general knowledge not tied to a policy rule.
Inputs: session_id (required), mode, title, reason, +9 more. Returns: mode, status, summary, precedent, +8 more
ck_fs_findARead-onlyIdempotent
Find files or directories whose path contains a given fragment, searching within the bound project root. Read-only — no files are modified. query is the path fragment or glob pattern to match against file and directory names. path scopes the search to a subdirectory (relative to project root); omit to search the entire project. limit caps the number of results (default 50). Use ck_fs_find to locate files by name or path. Use ck_fs_grep to search by file content. Use ck_fs_read to read a file at a known path.
Inputs: query (required), path, limit, session_id, +1 more. Returns: total, results
ck_fs_grepARead-onlyIdempotent
Search file contents inside the bound project root using grep-style pattern matching. Read-only — no files are modified. query uses fixed-string search by default; set fixed_strings: false to treat it as a regex. Scope the search with path (a relative directory or glob); omit to search the entire project. Returns matching lines with file path and line numbers. limit caps results (default 50). Use ck_fs_grep to find code patterns or strings inside files. Use ck_fs_find to locate files by name fragment. Use ck_fs_read to read a specific file by path.
Inputs: query (required), path, limit, session_id, +3 more. Returns: total, matches
ck_fs_lsARead-onlyIdempotent
List files and directories inside the bound project root. Read-only — no files are modified. path is a relative directory path to list; omit to list the project root. Use ck_fs_ls to browse directory structure. Use ck_fs_find to locate files by name fragment. Use ck_fs_read to read a specific file. Use ck_fs_grep to search file contents.
Inputs: path, session_id, project_root. Returns: path, entries
ck_fs_readARead-onlyIdempotent
Read a file from the bound project root. Read-only — no files are modified or created. path is required and must be relative to the project root (e.g., lib/my_module.ex). start_line (1-indexed) and max_lines enable windowed reads for large files. Omit both to read the entire file. Use ck_fs_read to inspect a file at a known path. Use ck_fs_find to locate a file by name fragment. Use ck_fs_grep to search inside files by content pattern. Use ck_fs_ls to list directory contents.
Inputs: path (required), max_lines, session_id, start_line, +1 more. Returns: path, content, start_line, total_lines
ck_git_commitADestructive
Validate a commit message against CK governance policy and execute git commit if validation passes and no findings are blocked. Write operation — creates a git commit in the repository when validation succeeds. Returns validation result, any blocked findings, and the commit SHA on success. If blocked findings exist, the commit is not created and the findings are returned for remediation. Use ck_git_status first to confirm governance state, then ck_git_commit to create the commit. Does not push to remote — use git push separately after commit.
Inputs: message (required), session_id, project_root. Returns: sha, error, message, validation
ck_git_diffARead-onlyIdempotent
Generate a git diff and run CK validation on the resulting diff. Read-only — no commits are created. base_ref and head_ref are git refs (branch names, commit SHAs, or tags); omit both or pass empty strings to diff the working tree against HEAD. Returns the diff text and any CK validation findings raised against it. Use ck_git_diff to review changes before committing or submitting a review. Use ck_git_status for a summary without the full diff. Use ck_git_commit to create the commit after reviewing.
Inputs: base_ref, head_ref, session_id, project_root. Returns: diff, base_ref, head_ref, validation, +1 more
ck_git_statusARead-onlyIdempotent
Get git working tree status correlated with CK governance findings for the current session. Returns staged, unstaged, and untracked files alongside any blocked or open findings from ck_validate or ck_review_submit. Read-only and side-effect free — no findings are created or modified. Use before ck_git_commit to verify governance state. Prefer ck_git_diff when you need the actual diff content; prefer ck_git_commit when ready to commit.
Inputs: session_id, project_root. Returns: branch, status, findings_correlation
ck_goalA
Record, list, or update durable governed goals so long-running intent stays explicit, citable, and reviewable across sessions. Three modes: record (write — creates a new goal); list (read-only — returns goals filtered by status and horizon); update_status (write — updates an existing goal's status or progress). Required: session_id and mode. For record: provide goal (the statement text) and optionally title, horizon (task/session/workspace), and tags. For update_status: provide goal_id and the new status. horizon controls scope: task for short-lived intent, session for the current session, workspace for persistent cross-session goals. Use ck_goal for structured multi-session intent that should be explicitly tracked and reviewed. Use ck_memory_record for general decisions or notes not requiring status tracking.
Inputs: mode (required), session_id (required), body, goal, +12 more. Returns: goal, goals, title, status, +3 more
ck_load_resourcesARead-onlyIdempotent
Fallback for clients that do not support MCP resources or native bulk skill loading. Load one or more CK resource URIs such as skills://; pass multiple skills:// URIs to activate several skills in one governed CK call.
Inputs: uris (required), target, session_id, project_root. Returns: resources
ck_loopA
Create and govern a bounded iterative loop without executing worker code. The contract freezes verifier paths and hashes, separates mutable paths, classifies artifact longevity, and enforces metric, iteration, cost, duration, no-progress, blocked-finding, and lasting-code architecture stop conditions. Modes: create, record, status, stop, promote. Rejected iterations require an explicit audited rollback.
Inputs: task_id (required), session_id (required), mode, reason, +47 more. Returns: status, task_id, contract, decision, +7 more
ck_mcp_discoverARead-onlyIdempotent
Auto-discover tools from an external MCP server by querying its tools/list endpoint. This enables progressive discovery of MCP capabilities without manual configuration.
Inputs: server_url (required), timeout, transport. Returns: tools, total, server_url
ck_memory_archiveA
Archive a memory record so it is excluded from future ck_memory_search results. Write operation — marks the record as archived in the database; it is not deleted. memory_id is the integer ID returned by ck_memory_record or ck_memory_search. Use when a record is stale, superseded by a newer decision, or contains information that should no longer guide future agents. To update a record's content instead of archiving it, call ck_memory_record again with the same source_id.
Inputs: memory_id (required), session_id, project_root. Returns: archived, memory_id
ck_memory_recordA
Write a governed memory record so future agents can explicitly retrieve it via ck_memory_search. Write operation — persists to the database. Idempotent: re-submitting the same source_id updates the existing record rather than duplicating it. Pass memory as a plain string for quick notes, or as an object with body, title, summary, record_type, and tags for structured records. record_type controls retrieval filtering: use decision for architectural choices, finding for issues, proof for evidence, goal for intent, brief for task context. tags is a string or array of strings for categorization. source_id links the record to an external artifact (e.g., a review ID or commit SHA). Use ck_memory_record to persist knowledge that should survive session boundaries. Use ck_finding for policy violations with a ruling decision. Use ck_goal for durable multi-session intent.
Inputs: memory (required), body, tags, title, +8 more. Returns: title, task_id, recorded, memory_id, +2 more
ck_memory_searchARead-onlyIdempotent
Search governed typed memory for the current session to recover prior decisions, findings, proofs, and domain knowledge. Read-only. query is a freeform text search applied across record titles, bodies, and tags. record_type filters by type (decision, finding, proof, goal, brief, checkpoint); omit to search all types. top_k limits the number of ranked results (default 10). source_type and source_id filter by origin. Returns ranked records with citations and scores. Use ck_memory_search to retrieve what was recorded in prior steps or sessions. Use ck_memory_record to write new records. Use ck_experience_search for full-text search across findings and tasks workspace-wide.
Inputs: query (required), top_k, task_id, source_id, +5 more. Returns: count, query, records, detail_level, +1 more
ck_observabilityARead-onlyIdempotent
Read local observability reports for sessions, loop status, problems, memory, costs, trends, evals, generated benchmarks, history, and advisory promotion candidates. Read-only: no benchmark execution, draft approval, materialization, or promotion mutation.
Inputs: by, days, limit, report, +5 more. Returns: data, report
ck_outcome_trackerA
Record session outcomes or retrieve agent performance leaderboards to close the reinforcement-learning feedback loop. Three modes: record persists a session outcome (write operation); get_session reads a specific outcome by session_id (read-only); get_leaderboard returns ranked agent performance (read-only). For record mode: pass session_id, outcome (success/partial/failure), agent_id, and task_type. For get_leaderboard: pass workspace_id and optional window (days) and limit. Call after task completion before ending the session so ck_route and ck_cost_optimizer have fresh performance data for future routing decisions.
Inputs: mode (required), limit, window, outcome, +4 more. Returns: mode, entries, outcomes, recorded
ck_regression_resultA
Record external regression-test evidence from CI/CD systems (Bug0, Passmark, custom runners) so proof bundles and release-readiness checks account for external validation. Write operation — creates a DB record. Returns the recorded result ID. Required: session_id, engine (name of the test system), flow_name (test suite or flow identifier), outcome (passed/failed/flaky/skipped). Optional: commit_sha to link results to a specific revision, environment (ci/staging/production), external_run_id for cross-referencing the originating system, evidence for a structured payload. Use after an external test run to close the proof loop before calling ck_review_submit for a completion review. Retrieve past results with ck_memory_search using record_type: regression.
Inputs: engine (required), outcome (required), flow_name (required), session_id (required), +7 more. Returns: engine, outcome, recorded, flow_name, +1 more
ck_result_peekARead-onlyIdempotent
Peek at the full stdout of a previously completed ck_delegate embedded run without loading it all into context. Use result_ref and package_root returned by ck_delegate to locate the stored output. Supports byte-range reads: pass peek_bytes to limit how much to load, and offset to skip ahead. Use result_length (returned by ck_delegate) to decide whether to peek, pass the ref downstream, or skip loading entirely. This is the RLM variable-encapsulation pattern: treat large sub-agent outputs as named references, not inline blobs.
Inputs: package_root (required), offset, peek_bytes. Returns: output, truncated, bytes_read, total_bytes
ck_review_feedbackA
Approve or deny a submitted review and attach feedback notes or structured annotations. Write operation — updates the review record and unblocks or halts the execution gate. review_id (required) is the ID returned by ck_review_submit. decision must be approved or denied. feedback_notes is freeform text for the reviewer's rationale. annotations is a key-value object for machine-readable metadata. This tool is human-facing: agents call ck_review_submit to create a review, then a human (or authorized agent) calls ck_review_feedback to record the decision. After approval, the submitting agent can proceed with execution; after denial, the plan should be revised and resubmitted.
Inputs: decision (required), review_id (required), session_id, annotations, +2 more. Returns: updated, decision, review_id
ck_review_statusARead-onlyIdempotent
Fetch the latest decision status (pending/approved/denied), reviewer notes, and browser review URL for a previously submitted review. Read-only. Provide review_id (returned by ck_review_submit) for a specific review, or task_id to get the latest review for that task. review_type (plan/diff/completion) filters when task_id is used without review_id. Poll this after ck_review_submit to check whether a human has approved or denied the submission before proceeding with execution.
Inputs: task_id, review_id, session_id, review_type. Returns: status, decision, review_id, review_url, +1 more
ck_review_submitA
Submit a governed plan, diff, or completion packet for human review and execution gating. Write operation — creates a review record and returns a review_id and browser URL. review_type controls what is being submitted: plan (before implementation), diff (before merging), or completion (task done). submission_body is the full content: plan text, diff, or completion description. For iterative plan refinement, pass previous_review_id and plan_phase (ticket → research_packet → design_options → narrowed_decision → implementation_plan → code_backed_plan). The plan-quality scorer evaluates structured fields, not just submission_body — populate research_summary, options_considered, selected_option, rejected_options, implementation_steps, validation_plan, code_snippets, alignment_context, consulted_roles, codebase_findings, prior_art_summary, agent_spec_id, task_spec_id, agent_role, task_scope, out_of_scope, business_rules, domain_terms, allowed_actions, prohibited_actions, robustness_requirements, linked_policy_packs, linked_benchmark_suites, promotion_gates, allowed_semantic_changes, forbidden_semantic_changes, invariant_boundaries, requires_reapproval_if, harness_quality_checks, and scope_estimate for a strong score. Returns review_id, status (pending), and a URL where the human reviewer can approve or deny. After submission, poll ck_review_status until the decision is approved or denied before proceeding. Use ck_review_feedback (human-facing) to record a decision on an existing review.
Inputs: submission_body (required), title, task_id, metadata, +39 more. Returns: title, status, review_id, review_url
ck_rollbackADestructive
Execute a governed rollback of an agent's work. Records a git checkpoint before each task and provides a single action to revert. Safety-checked: refuses if downstream tasks depend on the changes. Creates an audit finding on every rollback. Modes: checkpoint (capture git HEAD before task), execute (revert agent's changes), status (check snapshot state), list (all snapshots for session).
Inputs: session_id (required), mode, reason, task_id, +1 more. Returns: sha, mode, status, task_id, +2 more
ck_routeARead-onlyIdempotent
Recommend the best available AI agent for a given task based on security tier, remaining budget, task type, and past performance data. Read-only — no session state is changed. task is a plain-language description of what needs to be done. risk_tier (low/medium/high/critical) filters out agents that are not cleared for the security level; defaults to medium. allowed_agents restricts routing to a specific subset of agent IDs; omit to allow all. Returns a ranked list of agent recommendations with rationale. Use ck_route to pick an agent, then ck_delegate to transfer the task. Use ck_cost_optimizer for a price-focused comparison without routing.
Inputs: task (required), risk_tier, allowed_agents, budget_remaining_cents. Returns: task, risk_tier, recommended
ck_sessionA
Enumerate and manage governed sessions. Three modes: list (enumerate sessions for the project); status (get current session details, resolves from project binding if session_id omitted); switch (change active session binding — REQUIRES confirm: true).
Inputs: mode, limit, confirm, session_id, +1 more. Returns: id, title, total, sessions, +4 more
ck_session_digestA
Generate a condensed, human-scannable digest of what happened in a session — tasks completed, findings raised, budget spent, reviews pending, and notable highlights. Three modes: generate (create a new digest), latest (return the most recent), list (paginated history). Designed for the forward-deployed engineer who needs an 'inbox that summarizes what happened' without reading raw event streams.
Inputs: session_id (required), mode, digest_type. Returns: highlights, session_id, digest_type, findings_raised, +3 more
ck_skill_evolutionARead-onlyIdempotent
Synthesize a deduplicated skill-evolution packet from recent traces and recurring failure clusters, including anti-patterns, reinforced practices, and a ready-to-merge skill draft. Set validate_only=true to run the Self-Harness validation stage (held-in/held-out + regression) without writing. Set install=true to validate and then materialize the draft into .agents/skills//SKILL.md under project_root, preserving the previous file as .bak.
Inputs: install, session_id, project_root, session_limit, +4 more. Returns: install, guidance, validation, anti_patterns, +3 more
ck_skill_listARead-onlyIdempotent
List all available AgentSkills for this project. Returns names, descriptions, and scopes. Call this to discover capabilities you can activate, then use ck_skill_load to load a skill's full instructions.
Inputs: format, target, project_root, include_duplicate_copies. Returns: total, skills, target, usage_hint, +4 more
ck_skill_loadARead-onlyIdempotent
Load the full instructions for a named AgentSkill. Returns the SKILL.md body wrapped in <skill_content> tags plus a list of bundled resource files. Call after ck_skill_list to activate a specific skill.
Inputs: name (required), target, task_id, session_id, +1 more. Returns: name, scope, source, target, +12 more
ck_skill_validateARead-onlyIdempotent
Validate skill output against a JSON Schema defined in the skill's result-schema frontmatter field. Skills can define a result_schema in their frontmatter; agents call this tool after running a skill to enforce typed, structured output. Accepts output + schema directly, or output + skill_name to validate against the skill's built-in schema.
Inputs: output (required), schema, skill_name, project_root. Returns: valid, errors, skill_name
ck_taskA
Manage governed tasks within a session. Six modes: status (return task details for a given task_id); claim (claim an available task for execution); complete (mark a task as done, blocked if unresolved findings exist); heartbeat (signal the agent is alive and working on a task); checks (record task quality check results); report (submit a task report with output and metadata).
Inputs: session_id (required), mode, note, checks, +7 more. Returns: count, title, run_id, status, +8 more
ck_token_auditARead-onlyIdempotent
Audit project rule files (AGENTS.md, CLAUDE.md, etc.) and skills for token overhead. Returns word counts, token estimates, duplicate detection, and optimization recommendations.
Inputs: mode, project_root. Returns: mode, duplicates, word_counts, recommendations, +1 more
ck_tool_healthARead-onlyIdempotent
Analyze governance coverage across recent sessions in the workspace — which CK governance tools (ck_validate, ck_review_submit, ck_budget, ck_memory_record, ck_goal) are load-bearing, active, low-usage, or unused — and return actionable recommendations for gaps.
Inputs: session_id, project_root, session_limit. Returns: coverage, recommendations
ck_trace_packetBRead-onlyIdempotent
Export a structured session or task trace packet with failure patterns and eval candidates for trace-centered improvement loops.
Inputs: task_id, session_id, events_limit, project_root. Returns: events, task_id, session_id, eval_candidates, +1 more
ck_validateARead-onlyIdempotent
Validate proposed code, config, shell commands, or text against CK policy before execution. Read-only — no changes are applied to the project. Returns a validation result with any policy violations as findings. content is required. kind classifies the artifact (code/config/shell/text) for policy routing. source_type identifies the content's origin (developer, tool_output, human_review, issue, pull_request, web) for trust-boundary checks; untrusted sources receive stricter scrutiny. domain_pack applies a domain-specific policy pack (e.g., hipaa, owasp). requested_capabilities declares what the content needs (network, filesystem, shell, deploy) so the trust boundary can evaluate the request. Call ck_validate before writing files, running shell commands, or executing generated code. If validation returns blocked findings, do not proceed — use ck_finding to record them.
Inputs: content (required), kind, path, task_id, +10 more. Returns: allowed, summary, advisory, decision, +5 more
ck_workspace_agentA
Manage workspace agent roles: one primary 'super-agent' per workspace maintained by a forward-deployed engineer, specialized agents for specific domains, and ephemeral agents for short-lived tasks. Modes: register (create agent, only one primary per workspace), update (change scope/budget/status), list (all agents for workspace), health (aggregated health indicator), retire (deactivate agent).
Inputs: mode, name, role, scope, +7 more. Returns: mode, name, role, agents, +3 more
ck_worktree_listBRead-onlyIdempotent
List all git worktrees in the current repository with their branch, HEAD, and status information.
Inputs: project_root. Returns: worktrees
ck_worktree_switchBDestructive
Switch the current session to a different git worktree and update session metadata accordingly.
Inputs: worktree_path (required), session_id. Returns: branch, switched, worktree_path
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 55 tools
Most tools have distinct purposes (git, fs, review, memory), but there is significant conceptual overlap: ck_memory_search vs ck_experience_search both perform freeform search over findings/tasks; ck_context vs ck_context_pack are adjacent and rely on descriptions to separate; several ck_experience_* tools overlap with ck_memory_search. Multi-mode tools like ck_task and ck_session pack many actions into one tool, making boundaries fuzzier.
Strong consistent ck_<domain>_<action> pattern (ck_fs_read, ck_git_diff, ck_memory_record, ck_review_submit). Minor deviations exist where domain is dropped (ck_validate, ck_route, ck_delegate, ck_copilot, ck_loop), but these are still readable and follow the ck_ prefix convention.
55 tools is heavy, well beyond the 15-tool sweet spot, and the surface spans many sub-domains (git, fs, memory, review, budget, delegate, deploy, skills, checkpoints, worktrees, copilot). This breadth makes selection costly and increases the chance of picking the wrong tool.
Coverage is broad and deep, with CRUD/lifecycle for memory, findings, reviews, goals, checkpoints, sessions, and git. Read-only exploration is well covered. Some operations are missing or indirect (e.g., no direct memory update tool—only re-record with source_id; no push tool), but most workflows can be completed.
Maintenance
Related MCP Connectors
Control plane for autonomous software labor. Agents claim objectives over MCP with audit trail.
Tenant-scoped control layer for agent-to-agent systems: governed routing, approvals, evidence.
Governed MCP: agent audit, provenance, deterministic checks, and receipt-backed FragGate execution.
Pre-execution governance for AI agents. Deterministic PASS/FAIL/REVIEW verdicts, replayable proof.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceProvides a governed execution boundary for AI agents, enforcing deterministic policy, one-shot human approvals, and signed receipts for MCP tool effects.MIT
- AlicenseNot gradedqualityBmaintenanceProvides a governance layer for MCP servers, enforcing policy-based allow/deny/approval rules, requiring human approval for risky calls, and recording an auditable trail of every AI agent tool call.MIT
- AlicenseNot gradedqualityCmaintenanceEnables MCP clients to route coding tasks across local and cloud models with explicit budgets, repository planning and execution, and independent validation/repair checks.Apache 2.0
- AlicenseNot gradedqualityAmaintenanceEnables AI coding providers to run structured multi-agent workflows with tracked tasks, specifications, handoffs, and health-gated completion. It exposes MCP tools for task claiming, action logging, repairs, document validation, and lifecycle evidence.29 npmMIT