There are two ways to put an agent under your team’s rules.

Read the rules (MCP server)

You need an agent-scope key (clr_…). Create one on Account → Agent keys (/account/keys) or ask us for one (Agent keys).
Ask the agent to call get_workflow and list the rules. Then tell it: before any save or submit, call check_action and obey allowed: false. Other clients: MCP server. The catch: the agent decides whether to ask. An agent that forgets is never stopped. That’s what the guard is for.

Guard every write

One command, under a minute, every agent on your machine:
  1. Finds Claros. From the web app’s address (--web, or a link to your Claros: npx getclaros https://your-claros.example).
  2. Signs you in. It opens a page in your browser with a code; approve it and pick the workspace. Any member can.
  3. Finds your agents. Claude Code, Cursor, Codex, Claude Desktop and VS Code (their MCP configs, yours and this project’s), Playwright and browser-use in this project, Pomerado servers. It shows one short list of what it found.
  4. Guards all of it. Press Enter (or pass --yes). Every MCP server it can guard is wrapped, so each write goes through Claros first and reads pass straight through; Claude Code, Codex and Cursor get a hook so shell commands and file edits are checked too, in every project on this machine. --servers a,b narrows the MCP servers, --project-hooks keeps the hooks to this project.
  5. Proves it. For each agent it sends a made-up action that breaks one of your rules: through the hook it installed, run the way the agent runs it, or a dry check for MCP-only apps. Nothing is run and nothing is logged.
Your agents then show on Home → Your agents, as soon as they run, before they write anything. Run it again anytime: it shows the same list and fixes what changed, for example a config an app update rewrote.
What setup changes: Browser hooks read CLAROS_KEY from the environment. Setup writes it to your .env only if git ignores that file and doesn’t track it; otherwise it prints an export line that never shows the key. It never installs globally, never edits your source files, and backs up every file before it changes it. When an agent waits on an ask, its terminal says who it waits for and what: Waiting for Dana to approve: claude-code · runs vercel deploy --prod in shop — they've been notified. When the question is yours to decide, it shows the link.

Scripted setup (Claros for Mac, CI)

Without a browser: the key from CLAROS_KEY or on stdin, the server named, no questions, the result as JSON on stdout (what people read goes to stderr). Pin the version:
state is guarded, not guarded, drifted (changed since setup), nothing to guard or not found; how lists hook, mcp, browser; proof is ok, failed or skipped. status --json has the same rows (proof skipped) plus last_seen. The key never appears in any output (clr_ab12cd34_…). A person’s agents and their recent stops and asks, with the same key: GET /v1/me/agents?since=<unix time> returns {person, agents: [{agent, status: guarded|quiet|unknown, last_seen, last_check, machines, checks, stop, ask, nudge, coverage}], events: [{id, ts, agent, app, tool, result: stop|ask, summary, rule, question}], cursor}. Events come oldest first, at most 100; pass cursor back as since to get only new ones.