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.

Paste into your agent
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:

Terminal
curl -fsSL https://github.com/commonmeasure/commonmeasure/releases/latest/download/install.sh | sh -s -- --connect https://hub.commonmeasure.ai --token TOKEN

It 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:

Terminal
curl -fsSL https://github.com/commonmeasure/commonmeasure/releases/latest/download/install.sh | sh

Downloads 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):

Terminal
export PATH="$HOME/.local/bin:$PATH"
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc

Checkpoint. 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:

Terminal
git clone https://github.com/commonmeasure/commonmeasure
cd commonmeasure
cargo install --path crates/commonmeasure-cli

Connect your agent

Terminal
commonmeasure install claude
commonmeasure doctor claude

Records 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.

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.

Terminal
claude plugin marketplace add commonmeasure/commonmeasure
claude plugin install commonmeasure@commonmeasure

Use one registration route to avoid duplicate records.

Make a read. See the record.

In a new session, ask your agent:

Paste into your agent
Read https://www.gov.uk using context_fetch.

Then inspect the latest source record in your terminal:

Terminal
commonmeasure session
crossings
  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.

Terminal
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   1

Start a new session in your agent so it loads the policy, then ask:

Paste into your agent
Read https://example.com using context_fetch.

The tool refuses the read before fetching the page. Inspect the record:

Terminal
commonmeasure session
crossings
  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:

Terminal
commonmeasure credentials

Keys 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:

Terminal
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:

Terminal
commonmeasure service install console

On 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

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 list

Already admitted? Set up your organisation. Invited by a colleague? Join your organisation.