getclaros guard sits in front of an MCP server, local (stdio) or remote (HTTP). Reads pass through. Each write tool call goes to POST /v1/check first; a call that breaks a rule is never forwarded, and the agent gets a tool error with the rule, the owner’s words and who to ask. Your agent doesn’t change.
Set up
- Signs you in through the browser (device sign-in) and saves an
agentkey for the workspace you pick. - Finds your agent clients’ MCP configs and lists their servers.
- Wraps every server it can (reads pass straight through, so guarding a read-only server costs nothing), after backing up the file.
--servers a,bnarrows it; Enter at the prompt takes all,ppicks. - Adds a
clarosentry so agents can read the map up front (MCP server).
init only edits files that exist. Each wrapped server’s command becomes npx -y getclaros guard --server <name> -- <original command>; env, cwd and comments stay. Running it again changes nothing.
Check it: test, status
0 stopped (test) / OK (status), 1 not stopped, no map to test, or (status) an agent not guarded or changed since setup, or a browser agent here not set up, 2 not signed in or bad usage, 3 Claros unreachable or key rejected. With no guarded server matching a map, test uses your newest map and says DEMO.
Undo
init wrote it is restored from its backup. A file you changed since is unwrapped in place, keeping your edits.
Run it by hand
The guard logs one line per decision on stderr:
Remote servers
Hosted MCP servers (aurl entry instead of a command) are guarded too. Your client still starts a local process; the guard reaches the server over Streamable HTTP:
init does this for you when the entry has static headers (headers, or http_headers in Codex): the entry becomes npx -y getclaros guard --server <name> --remote <url> --header "K: V" …. The headers stay in that same config file (${VAR} and ${input:…} still work) and go only to the app’s server, never to Claros. undo puts the url entry back.
Listed but not guarded yet:
- Servers that sign in with OAuth (no static header in the config).
- A token from an env var or a helper (Codex
bearer_token_env_var/env_http_headers, Claude CodeheadersHelper). - Legacy SSE servers (
"type": "sse").
Limits
- Remote servers: static headers and Streamable HTTP only (see above).
- Codex servers written as inline tables or dotted keys aren’t found.
- No Windows
.cmdshims.