Start with one agent.
No account required. Source records stay local until you choose to share them. Each step ends with a checkpoint you can see.
Let your agent run the steps
Paste this into Claude Code or Codex. It carries the commands, so the agent needs no web access; approve each one it asks to run.
Install Common Measure and connect it to this app. Run: curl -fsSL https://github.com/commonmeasure/commonmeasure/releases/latest/download/install.sh | sh. Then run ~/.local/bin/commonmeasure install claude and ~/.local/bin/commonmeasure doctor claude, using codex in place of claude if this app is Codex. Show me the doctor output.Then quit and reopen the app so it loads Common Measure, and continue from step 03.
With a Hub organisation: one line
In Hub, open Enrol this machine, name the machine and choose Mint enrolment token. The token works once, for 15 minutes. In the project directory whose sessions Hub should see, run:
curl -fsSL https://github.com/commonmeasure/commonmeasure/releases/latest/download/install.sh | sh -s -- --connect https://hub.commonmeasure.ai --token TOKENIt installs Edge, registers every agent host it finds, connects this machine under your organisation’s policy, enrols the directory for Hub reporting and relays. It prints one line per step, then the Fleet evidence and console addresses. Run from your home directory or /, it enrols no project. The first-run fetch is reported as not made in this release. A failed step stops, names what to do and leaves Edge installed. Hub onboarding covers project approval.
Install Edge
macOS and Linux:
curl -fsSL https://github.com/commonmeasure/commonmeasure/releases/latest/download/install.sh | shDownloads the release binary, verifies its checksum and installs it to ~/.local/bin. The installer does not edit your shell profile.
If the installer says ~/.local/bin is not on your PATH, add it for this terminal and for new ones (zsh, the macOS default):
export PATH="$HOME/.local/bin:$PATH"
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrcCheckpoint. commonmeasure --version prints a version, such as commonmeasure 0.4.10.
Windows, requirements and building from source
The installer needs a POSIX shell, curl, and sha256sum or shasum. Release binaries cover Apple silicon and Intel Macs, Linux x64 and arm64, and Windows x64. The installer is exercised on Linux and Apple silicon.
The Windows binary is built and checksummed, but its installer has not been run on Windows. Policies declaring principals refuse mediated reads on Windows because operating-system identity resolution is Unix-only. Release and platform details.
To build from source, use Rust 1.97 or later:
git clone https://github.com/commonmeasure/commonmeasure
cd commonmeasure
cargo install --path crates/commonmeasure-cliConnect your agent
commonmeasure install claude
commonmeasure doctor claudeRecords supported host reads through hooks and provides tools that can apply policy before a read. The Claude Code plugin also sends Claude Code’s own WebFetch and WebSearch through Common Measure, on Claude Code 2.1.287 or later.
commonmeasure install codex
commonmeasure doctor codexProvides Common Measure’s tools. Recorded session evidence covers Codex CLI; desktop and IDE use the same registration but have no recorded session.
commonmeasure install pi
commonmeasure doctor piRegisters an extension that routes supported reads through Common Measure’s tools.
Checkpoint. doctor lists the host as ✓ registered. Lines marked · are information, such as “policy absent; observe mode”; act on any marked !. Then quit and reopen your agent: a session loads Common Measure only when it starts.
Other hosts and the Claude Code plugin
These registrations can write and check host configuration. Live session coverage is recorded in the host-integration contract.
- Claude Desktop
commonmeasure install claude-desktop
Registration tested; no recorded mediated session- Cursor
commonmeasure install cursor
Registration tested; hook shapes checked against the specification; no recorded session- Copilot CLI
commonmeasure install copilot
Registration tested; no recorded session. Needs a Copilot plan that allows MCP.- VS Code
commonmeasure install vscode
Registration tested; no recorded session. Needs a chat model.- Chrome
commonmeasure install chrome
Registers the native messaging host for the separately loaded browser extension. Experimental source recording; no pre-read enforcement or established live coverage across answer surfaces.
For the Claude Code marketplace route, install the binary above, then use these commands instead of commonmeasure install claude. The plugin adds the /commonmeasure:enrol command.
claude plugin marketplace add commonmeasure/commonmeasure
claude plugin install commonmeasure@commonmeasureUse one registration route to avoid duplicate records.
Make a read. See the record.
In a new session, ask your agent:
Read https://www.gov.uk using context_fetch.Then inspect the latest source record in your terminal:
commonmeasure sessioncrossings
mediated grounded https://www.gov.uk/Checkpoint. The record lists https://www.gov.uk/ as mediated and grounded: Common Measure fetched the page and its text went into the model’s context. “identity: unsigned” is expected on an Edge that is not enrolled with Hub.
Why the agent refuses commonmeasure.ai
This site’s licence permits AI input on condition that the use is reported. A local Edge with no reporting receiver cannot meet that condition, so it refuses the read and records the reason: “the demand cannot be met: no telemetry receiver is configured”. Enrolling with Hub configures a receiver.
Refuse a read.
Create a personal source policy that refuses example.com. Use this example if you do not already have a policy.json; if you do, edit your existing policy using the source policy contract.
cat > "${COMMONMEASURE_HOME:-$HOME/.commonmeasure}/policy.json" <<'EOF'
{
"policy_mode": "strict",
"constraints": [
{"kind": "denied_source_host", "host": "example.com"}
]
}
EOF
commonmeasure policy check "${COMMONMEASURE_HOME:-$HOME/.commonmeasure}/policy.json"The check reports the mode and the rule count:
mode strict
constraints 1Start a new session in your agent so it loads the policy, then ask:
Read https://example.com using context_fetch.The tool refuses the read before fetching the page. Inspect the record:
commonmeasure sessioncrossings
mediated refused https://example.com/
refused: The job denies host example.com.Checkpoint. The refused crossing names the rule that refused it. Other hosts, such as www.gov.uk, are still admitted.
These output excerpts omit file paths, empty policy sections, session metadata, totals and policy digests. Removing this policy.json returns a local Edge to observe mode. Start a new agent session after removing it.
Add a provider key.
Optional: bring a supplier’s API key to search through that supplier. List the supported suppliers and the variable each needs:
commonmeasure credentialsKeys for a local Edge go in ~/.commonmeasure/credentials.env, or $COMMONMEASURE_HOME/credentials.env if you set a different home. Create the file if it is missing and restrict access to your user:
touch "${COMMONMEASURE_HOME:-$HOME/.commonmeasure}/credentials.env"
chmod 600 "${COMMONMEASURE_HOME:-$HOME/.commonmeasure}/credentials.env"Open that file in a text editor. For Exa, add EXA_API_KEY= followed by your key on the same line. For Tavily, use TAVILY_API_KEY=. Keep any existing entries, with one KEY=VALUE per line.
Checkpoint. commonmeasure credentials shows ✓ exa configured (EXA_API_KEY from the operator file). It never prints the key. A variable in the launching environment takes precedence over the file.
Restart your agent, then ask it to search using context_search with your chosen provider, such as exa. Supplier searches may be charged to your account; your source policy still applies. A configured key does not establish access or available credit.
Open the console.
The console shows the same records in your browser. It listens on your machine only and has no sign-in. On macOS, keep it running as a login service:
commonmeasure service install consoleOn other systems, or for this terminal only, run commonmeasure serve and stop it with Ctrl-C.
Checkpoint. commonmeasure console prints ✓ console: http://127.0.0.1:4173 answers. Open that address. Under Record, the example.com refusal from step 04 names its rule; Sources shows the keys from step 05.
After changing credentials.env, run commonmeasure service install console again to restart the console. The console describes its pages.
Where next
- Source policy contract: access rules, directory scopes, budgets and licence terms.
- Walkthrough without an agent host: send fetches through the MCP transport and compare an admitted and a refused crossing.
- Enrol a project directory: choose local recording or reporting per project.
- Hub onboarding: set up an organisation, or join one you were invited to.
Connect your team.
Hub brings team access, shared policy and approved reporting. Access is by invitation during the pilot, which is free, including invited colleagues.
Join the waiting listAlready admitted? Set up your organisation. Invited by a colleague? Join your organisation.