Skip to content

Latest commit

 

History

964 Commits

Folders and files

codeArbiter. Hard gates for agentic coding.

Open-source governance and hard gates for AI coding agents across Claude Code, Codex CLI, and Pi.

codeArbiter is a repository-owned governance layer for tests, reviews, security checks, decisions, and durable project context. You decide. codeArbiter enforces.

Claude Code plugin Codex plugin Pi Feature Forge preview version 2.25.5 core lanes skills agents license AGPL v3

Start learning   ·   Install   ·   Browse the reference

Install it globally. It stays dormant until a repository explicitly opts in.

Agentic coding, with a record

codeArbiter is for teams and power users who let coding agents do consequential work and need more than “the model said it passed.” Every request enters a named lane. The lane defines the evidence it must produce, the reviewers it must dispatch, and the conditions that stop it.

This repository contains four sibling plugins:

  • ca for Claude Code, ca-codex for Codex CLI, and ca-pi for Pi are the three governance hosts.
  • ca-sandbox is the isolated local-Codespace infrastructure plugin.

The three governance hosts are generated from one shared surface and use one checked-in .codearbiter/ project store. A repository can move between hosts without losing its specs, plans, ADRs, tasks, decisions, or audit history.

codeArbiter will not:

  • write feature code before the required failing test exists;
  • commit on a red suite or outside the commit gate;
  • resolve a [CONFIRM-NN] question by guessing;
  • silently reconcile a conflict between the rules, the docs, and the code; or
  • push directly to the default branch or merge without the user.

The gates scale to the work. A prose edit takes the small docs lane. A security-sensitive feature takes the full spec, test-first, review, and PR path.

The Codex path was live-verified on Codex CLI 0.144.1 with trusted SessionStart injection and a real [H-03] PreToolUse block. The dated Claude Code + Codex evidence separates continuously verified packaging from the live checks that require a model-backed turn.

See it catch something

The landing page includes a faithful replay of a shipped hook invocation. It invokes the real pre-bash.py guard, records the source digest, proves the blocked command never ran, and preserves the exact stderr and audit effect. It does not pretend that a direct hook replay proves host discovery or trust.

The operating loop looks like this:

you      /ca:fix the statusline keeps running the old version after an update

arbiter  route to the regression-test-first fix lane
         failing test -> minimal fix -> focused proof -> full verification

you      /ca:commit
arbiter  permission -> branch -> tests -> behavioral proof -> diff review
         selective stage -> commit

you      /ca:pr
arbiter  reviewer fleet challenges the exact diff
         BLOCK findings are resolved before the draft PR can advance

The user owns the decision. The repository keeps the evidence.

Get running

Choose the adapter for the coding host you already use. The host chooser covers stability, command syntax, trust, and platform differences.

Host Adapter Command form Status
Claude Code ca /ca:feature Stable
Codex CLI ca-codex $ca-feature Stable
Pi ca-pi /ca-feature Feature Forge preview

Prerequisites: Python 3 on PATH and git config user.email set. ADR lifecycle proof requires Git 2.45.0+ with --no-lazy-fetch on all three governance hosts; unavailable flag support blocks verification with an upgrade prerequisite, never an implicit fetch fallback. Pi also requires Node.js 22.19+. If Python is missing, Pi installs its final wrappers but blocks mutating calls and points to /ca-doctor; Claude Code and Codex surface an interpreter breadcrumb instead of silently claiming governance is active. The compatibility matrix defines the supported native Git/runtime and linked-worktree boundary; mixed Windows Git and WSL Git over one shared repository are not supported.

Claude Code

/plugin marketplace add arbiterForge/codeArbiter
/plugin install ca@codearbiter

Approve the normal plugin trust prompt, open the target repository, and continue with /ca:init.

Codex CLI

The public GitHub-slug flow is available now. The current adapter version is read from plugins/ca-codex/.codex-plugin/plugin.json. The dated end-to-end public-install record discovered ca-codex 0.2.4 from release v2.8.13. Current packaging and shared-core parity are continuously verified, while that historical record stays labeled rather than being promoted to evidence for a newer adapter:

codex plugin marketplace add arbiterForge/codeArbiter --ref ca-codex-marketplace
codex plugin add ca-codex@codearbiter

The ca-codex-marketplace branch is the promoted catalog. Its entry pins an immutable ca-codex-dist-v<version> Git tag holding the exact qualified release archive, including the native artifact engine; main remains the development source tree and is not a substitute for the promoted binary-bearing distribution. (An @arbiterforge/ca-codex npm channel is planned but deferred, ADR-0040.)

If codearbiter was previously registered without --ref ca-codex-marketplace, marketplace upgrade keeps that default-branch registration and does not migrate it to the promoted binary-bearing channel. Remove and re-add the marketplace once, then reinstall the plugin:

codex plugin remove ca-codex@codearbiter
codex plugin marketplace remove codearbiter
codex plugin marketplace add arbiterForge/codeArbiter --ref ca-codex-marketplace
codex plugin add ca-codex@codearbiter

Open /hooks, review and trust the ca-codex handlers, then start a fresh task. Run $ca-init and $ca-doctor.

For development against an unpublished checkout:

git clone https://github.com/arbiterForge/codeArbiter
cd codeArbiter
codex plugin marketplace add .
codex plugin add ca-codex@codearbiter

Pi

Note

ca-pi is a Feature Forge preview. It is available for real use now, and you are welcome to install it, use it in repositories, and report what you find. Its automated and hosted promotion matrix is green; broader real-world evidence is still required before codeArbiter claims 100% validation or stable status.

The quickest install is the npm channel: pi install npm:@arbiterforge/ca-pi (ADR-0029). For the reproducible pinned install, list the independently versioned tags, choose one exact result, then inspect the installed package, grant project trust, and start a fresh session:

git ls-remote --tags --refs https://github.com/arbiterForge/codeArbiter.git "ca-pi-v*"
pi install git:github.com/arbiterForge/codeArbiter@ca-pi-v<version>
pi list
pi config

Replace <version> with the numeric suffix from the chosen tag while retaining the full ca-pi-v... tag in the install source. The Git-tag install carries no native artifact engine, so it is a partial install that cannot author typed HTML specs and plans; use the npm channel for that.

Pi 1.1.0 is the supported host for this release line. Generated aliases use /ca-*; /skill:ca-* is the host-native fallback. Every ca-pi-v* tag is also published to npm as npm:@arbiterforge/ca-pi with provenance (ADR-0029); the pinned Git tag remains the reproducible install. The Pi runbook covers isolated install, trust, verification, shared-state continuity, and uninstall.

Protect the first repository

Use a disposable Git repository for the first run. Add at least one meaningful source file, then invoke the host-native forms below:

Outcome Claude Code Codex CLI Pi
Scaffold project state /ca:init $ca-init /ca-init
Prove enforcement /ca:doctor $ca-doctor /ca-doctor
Read live state /ca:status $ca-status /ca-status

init creates .codearbiter/ and routes an existing codebase to create-context or a greenfield project to decompose. doctor must report a healthy interpreter, current payload, and H-03 live-fire probe before you treat the repository as governed.

Follow the complete first-repository walkthrough for expected output, proof, and recovery.

Practice before using your own repository

Arbiter Academy is an optional practice course for codeArbiter. It starts in a personal fork of the Academy repository, so you can make real commits, inspect governed evidence, and recover from a failed attempt without placing your own project at risk.

The Academy website is the lesson surface. Each published lesson identifies whether an action belongs in the browser, native terminal, active harness, or with the agent, then provides a copyable command, the result to expect, the evidence to inspect, and a safe recovery path. Start there when you want to learn the workflow before protecting a production repository.

The docs are the operating manual

The site is designed as a continuous path from first contact to source-backed operation:

Need Start here You finish able to...
Understand the promise What is codeArbiter explain command, route, dispatch, gate, and ship
Choose and install a host Start install, trust, activate, and verify one adapter
Learn in order Learning path progress from foundation through the power-user capstone
Run daily work Workflows select and complete the smallest correct lane
Understand the model Concept map trace routing, decisions, context, review, and audit evidence
Diagnose a problem Troubleshooting follow a symptom to a deterministic recovery
Look up exact behavior Reference inspect generated commands, skills, agents, hooks, and configuration
Evaluate preview work Feature Forge opt in, verify the off switch, and understand the promotion bar

Command, skill, agent, and hook-gate reference pages are generated from shipped source on every site build. Hand-authored guides teach the workflow; generated pages define the exact current surface.

How governance works

flowchart LR
    I["host-native command"] --> R["owning skill"]
    R --> A["author or operator action"]
    A --> V["tests + focused proof"]
    V --> F["matched reviewer fleet"]
    F --> G{"gate clear?"}
    G -->|no| X["named finding or user decision"]
    X --> A
    G -->|yes| P["selective commit + draft PR"]
Loading

Activation is explicit and per repository. Claude Code and Codex check .codearbiter/CONTEXT.md at SessionStart. Pi checks the same file through its session_start extension event and also requires affirmative project trust. Without arbiter: enabled, the global install is dormant: no repository persona, no repository gates, and no governance row.

The project record lives beside the code:

.codearbiter/
├── CONTEXT.md             activation, vocabulary, maturity, current objective
├── tech-stack.md          approved technologies and versions
├── coding-standards.md    implementation and verification rules
├── security-controls.md   security contract reviewers evaluate
├── open-tasks.md          durable task board
├── open-questions.md      unresolved [CONFIRM-NN] decisions
├── decisions/             numbered ADRs
├── specs/ and plans/      approved intent and execution
├── sprint-log.md          SMARTS-scored autonomous decisions
├── checkpoints/           periodic reviewer sweeps
├── audits/ and reports/   assembled evidence
└── overrides.log          append-only sanctioned bypass record

The .codearbiter directory reference explains who creates, reads, and updates every artifact, plus its recovery rules.

The hard gates

  • No feature code before tdd Phase 1 completes.
  • No commit outside commit-gate, and never with a red suite.
  • No [CONFIRM-NN] resolved by guessing.
  • No silent reconciliation of rule conflicts; route to /ca:conflict.
  • No raw secret stored in the repository, logs, images, or prompts.
  • No direct write to the default branch and no force-push.
  • No ADR outside /ca:adr, with explicit user attribution.
  • Every /ca:override, mode --dangerous/mode --ops entry/exit, and sprint auto-decision is durable and attributable.
  • H-18 activation protection has no in-session override path; disabling a repository requires an external editor and an explicit audit record.

Security and audit-trail correctness outrank data integrity, maintainability, performance, and velocity. A non-obvious tradeoff cites the level at which it was made.

SMARTS: bounded autonomy, explicit reasoning

SMARTS evaluates Scalable, Maintainable, Available, Reliable, Testable, and Securable properties. Each option gets a concrete verdict and evidence, followed by a strong, moderate, or tied recommendation. The user still decides.

/ca:sprint uses the same lenses for bounded non-hard decisions and writes every call to .codearbiter/sprint-log.md with a confidence flag. Security boundaries, irreversible operations, gate bypasses, merges, and unresolved questions remain true stops. See SMARTS and autonomous sprints.

Core lanes

Choose the workflow first. The canonical lanes keep daily work compact; advanced operations and compatibility routes remain available in the complete reference.

Workflow Choose Use it for
Evaluate /ca:preview Predict reviewers and run a read-only secret scan
Initialize /ca:init Create or inspect the repository-owned state store
Change /ca:feature, /ca:sprint, /ca:fix, /ca:refactor, /ca:chore, /ca:spike, /ca:add-dep Build, repair, restructure, explore, or change the supply chain through the owning gate
Review /ca:review Run the reviewer fleet over a diff or bounded path
Decide /ca:adr Record a numbered, user-attributed architecture decision
Ship /ca:commit, /ca:pr, /ca:release Commit, stage a pull request, or prepare an authorized release
Operate /ca:status, /ca:task, /ca:doctor, /ca:override Inspect state, manage the task board, verify enforcement, or log an allowed bypass

Complete command reference includes advanced operations, compatibility routes, internal protocols, deprecation guidance, and host availability. The generated host catalogs remain inspectable in plugins/ca/COMMANDS.md, plugins/ca-codex/COMMANDS.md, and plugins/ca-pi/COMMANDS.md. Claude Code includes statusline and prune; Codex intentionally omits both. Pi omits statusline and uses native compaction through its prune route.

Trust and host boundaries

The blocking enforcement core is local and Python-stdlib-only. It reads repository files and local Git state. It does not send repository content to a codeArbiter account; there is no hosted codeArbiter control plane.

Two background reads are separate from blocking evaluation:

  • SessionStart may run a detached, read-only git fetch against the repository's configured remote to report hygiene state.
  • A once-daily, fail-silent update check reads the public GitHub Releases API. It sends no repository content and never applies an update.

The optional /ca:sprint --farm preview is a distinct opt-in network feature. It sends byte-capped, secret-redacted task context to the OpenAI-compatible endpoint you configure and is inert without the flag and provider key.

See Enforcement and Security and the Hooks Reference for the exact event, read, write, block, and network contract.

Pi operational contract

ca-pi installs a rich footer in interactive parent sessions. The governance row appears only when the repository is enabled and affirmatively trusted; rate-window telemetry is omitted rather than fabricated. Execute mode asks before governed mutations and external side effects. Plan mode is read-only except for the current canonical spec, plan, and plan ledger.

Background jobs are bounded and session-only, and are never restored from Pi session entries. Unverified cleanup marks the manager unhealthy, blocks later launches, and points to /ca-doctor. Footer, permission, plan, and background surfaces are parent-interactive only and never recurse into hardened children.

The human-readable generated catalog is plugins/ca-pi/SKILLS.md. On a cold checkout, the platform aggregate reports missing_prerequisite and directs the operator to npm --prefix plugins/ca-pi/tools ci --ignore-scripts; it never installs dependencies on the verification path.

Feature Forge

A dark machined gate under controlled amber heat: preview work accumulating evidence before promotion.

Preview features are built, tested, and shipping, but they remain opt-in and dormant until real-world evidence earns stable status. A preview label never weakens a hard gate and never hides spending or trust requirements.

Feature Opt-in Promotion evidence still needed
ca-pi install a pinned ca-pi-v* Git tag diverse real repositories, providers, terminals, and workflows
Live transcript pruning CODEARBITER_PRUNE=dry real-session context savings and false-positive data
Pluggable execution farm /ca:sprint --farm per-task pass rates, cost, and gate-escape evidence
ca-sandbox install the sibling plugin real untrusted repositories and interactive --with-claude use

The source-backed live Forge catalog names every opt-in, off switch, dependency, trust boundary, and promotion signal.

The farm preview uses one checked-in farm.js backend across supported hosts. A Pi-native embedded farm worker is a future spike, not a shipping dependency or second engine. ca-pi distributes as the pinned Git tag plus the CI-published npm:@arbiterforge/ca-pi package (ADR-0029).

Operator details

Claude Code statusline

Run /ca:statusline to install the optional token-aware statusline.

Annotated codeArbiter statusline

Folder, Git state, rate limits, token use, cost, context headroom, model, effort, and session age render globally. The governance row activates only in an enabled repository. Run /ca:statusline uninstall to restore the previous statusline, or remove the codeArbiter setting when no previous line existed. Running /ca:statusline install again refreshes the installed path and preserves the backup; it does not uninstall.

Updates and configuration

Update the Claude marketplace explicitly:

/plugin marketplace update codearbiter

The operator-facing environment-variable catalog, defaults, accepted values, safety boundaries, and verification steps live in the Configuration Reference. Release notes are in the Changelog.

Turn it off or uninstall it

A repository without .codearbiter/CONTEXT.md carrying arbiter: enabled is dormant. Remove ca with Claude Code's plugin manager, run codex plugin remove ca-codex@codearbiter for Codex, or use pi remove with the pinned Git source for Pi. The repository-owned .codearbiter/ record survives, so another supported host can keep using it.

Follow Uninstall and Disable for host-specific removal, pinning, and verification.

Repository map

.claude-plugin/marketplace.json     Claude marketplace
.agents/plugins/marketplace.json    Codex marketplace
core/                               canonical shared policy and generated surface
plugins/ca/                         Claude Code governance host
plugins/ca-codex/                   Codex governance host
plugins/ca-pi/                      Pi governance host (Feature Forge preview)
plugins/ca-sandbox/                 isolated local-Codespace plugin
site/                               Astro/Starlight documentation product
docs/                               architecture, parity runbooks, reports, and media
.codearbiter/                       this repository's own governed project state

plugins/ca/ contains the always-on orchestrator, public commands, gated skills, dispatched agents, hooks, and farm tooling. The architecture docs, parity ledger, and full hook contract are the maintainer entry points.

OpenAI Build Week submission record

codeArbiter predates OpenAI Build Week. The submitted work, added July 13 through July 21, 2026, delivered the Pi host plus a corrective campaign over the shared governance core. It is consolidated in PR #313 at verified implementation head ec64809c1b6c32f69e3d9787ab205f7bbd563d50.

Codex was the primary development and orchestration environment. GPT-5.6 was used to design and implement the Pi adapter, investigate live failures, review older paths, and consolidate corrections across permissions, Windows process-tree cleanup, provenance, audit integrity, generated-source drift, CI contracts, and documentation.

The final candidate passed the six Pi platform cells — both then-supported Pi versions on Windows, macOS, and Linux (versions recorded in the linked artifacts), plus security analysis, CodeQL, shared-core contracts, generated-surface contracts, and the repository's final verifier. Sanitized evidence:

Judge quick start for the immutable candidate:

pi install git:github.com/arbiterForge/codeArbiter@ec64809c1b6c32f69e3d9787ab205f7bbd563d50
pi list
pi config

Inspect the repository, grant project trust, start a fresh Pi session, then run /ca-init and /ca-doctor.

Project history

codeArbiter v2 is a ground-up rebuild of the earlier vendored .agents/ framework as a native, multi-host plugin system. The complete record is in CHANGELOG.md and the site changelog. The v1 implementation remains available in early repository history.

License and contributions

codeArbiter is licensed under the GNU Affero General Public License v3.0 (AGPLv3). You may use, study, modify, and redistribute it under those terms. AGPLv3 section 13 also applies when a modified version is run as a network service.

The AGPLv3 transition applies from v2.6.0 forward. Earlier releases remain under the license they shipped with.

Open source. codeArbiter is available under AGPLv3 for open-source use, free of charge.

Commercial licensing. SUaDtL retains the copyright and reserves the right to offer the project under separate proprietary terms. Commercial licenses are not being offered at this time. Inquiries may be made through GitHub if AGPLv3 does not fit a use case.

Contributions. No Contributor License Agreement is currently in force. See CLA.md for its status and maintainer handling. A future agreement requires legal review and separate explicit assent; maintainers must not infer additional proprietary relicensing rights from the retired template.

Built for Claude Code, Codex CLI, and Pi.

Releases

Packages

Used by

Contributors

Languages