Golem docs

Trust

Limits, and what Golem does not do

Where each protection works, where it is only as strong as the client's hook, and what Golem deliberately leaves alone.

This page collects the edges in one place, so you meet them here rather than in a pilot. Each item links to the page that covers it in full.

Where each layer works#

LayerWorks inPlatforms
Answers the hook: block, hold, a reason on refusalClaude Code, Cursor, Codex, GitHub Copilot, Antigravity, Devin, Gemini CLI; Hermes and OpenClaw by pluginmacOS, Linux, Windows
The MCP pathAny MCP clientmacOS, Linux, Windows
Kernel jail on every shell commandClaude CodemacOS
VM sandbox for untrusted workAny agent that can call Golem's MCP toolsApple silicon, macOS 26 or later
Signed recordEverything aboveAll of them
  • The shell jail is not available on Linux or Windows yet, and does not wrap other agents' shells. See The shell jail.
  • The sandbox needs Apple silicon, macOS 26 or later and Claude Code installed. Elsewhere its tools report that it is unavailable. See The sandbox.
  • Hardware-backed signing keys need a Mac with a Secure Enclave or a Linux machine with a TPM 2.0. See Hardware-backed keys.

A hook is only as strong as the client#

A hook is cooperative. The agent's runtime calls it before a tool runs and honours its answer. That stops a model that misbehaves. It does not stop:

  • a runtime that skips its hooks, or a user who removes them;
  • what a shell command starts once it is running. A command allowed to run can start other programs without asking again. On a Mac, the shell jail limits what those can reach for Claude Code; elsewhere nothing does;
  • tools the client never routes through a hook.

The MCP path does not depend on the agent choosing to ask: Golem is the server the client calls, so a refused call never reaches the real one. For tools that only have a hook, Golem's control is as strong as that hook. Golem notices when an agent reports tools running with no hook having reached it, marks the machine inline enforcement quiet on its page in the console, and raises an alert. golem doctor on the machine names the fix.

Where a hold becomes a refusal#

A rule at Ask holds a call for a decision, but not every client can wait. Where it cannot, the call is refused, never quietly allowed. See Block, hold and contain.

WhereWhat an Ask does
Claude CodeIts own approval prompt, in every permission mode.
CursorIts own prompt in the Allowlist run mode. In Auto-review and Run Everything, Cursor would run the call past a prompt, so Golem refuses it.
CodexRefused: Codex's hooks cannot ask.
Any hook, Ask decided by your teamRefused with a message saying who decides and how to get it approved; a hook cannot wait for a person in the console.
Any hook, Ask decided by Golem's reviewer agentHeld for up to 35 seconds; if undecided, refused, and a retry waits on the same held call.
The MCP pathHeld for the workspace's Default wait for an answer (30 seconds unless you change it; a rule can set its own); then If no one answers applies, Block it by default.

When Golem is down or slow#

Golem is built so that an outage does not stop your engineers, and so that the protections that do not need it keep working. These are the defaults:

IfThen
The Golem agent does not answer a hookThe client lets the call through. Golem registers its hooks with a 45-second timeout.
An MCP server behind Golem is downThe call fails with an error: there is no server to pass it to. The profile's Policy failure mode (Fail open by default) changes only the error the agent gets.
The Golem agent itself is stoppedMCP servers wired through it cannot be reached until it is back. Hooks let calls through, as above.
Nobody answers a held MCP callBlock it, unless you chose Let it through.
The shell jail cannot reach the Golem agent within 250 msIt applies the last known policy, or a baseline: credential stores and persistence writes stay denied, the network stays open.
The model relay is unreachableRedaction applies only the on-machine patterns; names and addresses are not removed from that payload.
The machine is offlineEntries are signed and kept on the machine, and sent when it reconnects.

What is not captured or checked#

  • Commands you type yourself. Golem watches agents, not your terminal.
  • AI tools Golem is not wired into. They still turn up, named, with the machine they ran on, but their calls are not checked. See Shadow AI.
  • Claude Code's file tools and the jail. Read, Write and Edit do not go through a shell, so the jail does not see them; rules still do.
  • Results that do not pass through Golem. A rule on a tool's result, and redaction of what the agent reads, act only where the result passes through Golem: Claude Code's hooks and Golem's MCP gateway. Other agents' hooks get the block and the reason only.
  • Model traffic. Prompts and responses passing through Golem's provider proxies reach the provider unredacted; only Golem's stored copy is redacted. See Redaction.
  • The browser. The extension covers ChatGPT, Claude.ai and Gemini in the browser it is installed in. See Browser extension.

Size limits you could hit#

WhatLimitPast it
A tool call's hook payload5 MBNot checked: the client treats the refusal to read it as an error and lets the call through.
An MCP request through Golem5 MBRefused as too large.
One response line from a local (stdio) MCP server1 MBDropped, and the agent gets an error.
A field Golem redacts1 MiBNot scanned; stored as written and kept out of search.
Text sent to the model relay for names and addresses100 KBOnly the on-machine patterns apply.
A result scored by the prompt-injection checkfirst 32 KBThe rest is not scored.
Testing a rule on past traffic30 days, newest 20,000 entriesOlder entries are not tested.
Files handed to sandbox_open20 files, 100 MB each, 500 MB in allRefused.

Models never make the block decision#

A block is a local rule check: compiled CEL, with no model and no network hop. Models appear in three places, none of which is that decision:

  • The prompt-injection check scores what an agent read. A rule on that score decides. It is off until you turn it on.
  • Golem's reviewer agent decides only the held calls a rule hands to it. It refuses them or hands them to a person, and lets one through only where that rule says it may. It is off until an owner or admin turns it on.
  • Golem's investigators read sessions after the fact and raise flags for a person. They do not act on their own, and a rule they propose waits for a person by default. See From a finding to a rule.

Reading payload bodies is off by default too: the investigators read metadata and redacted, shortened arguments unless you turn payload reading on. See Session review.

What Golem deliberately does not do#

  • No irreversible containment. Quarantine, Restrict to Safe and a locked-down session are all reversible by a person. Golem's containment never deletes files, kills an agent's processes or wipes a machine, because no detector is accurate enough to justify an action you cannot take back. See Quarantine a machine.
  • No loosening from inside a session. /safely and a lockdown only tighten. An agent cannot talk its way back out, and neither can content it read. See Safely.
  • No rewriting the record. Not by you, not by an agent, not by Golem. A correction is a new entry. See The signed record.
  • No credential values in alerts. The config scan reports a plaintext secret by the variable's name, never its value.
  • No catching an injection by isolation alone. The sandbox limits what an injection can reach; it does not detect one. The prompt-injection check is a separate, opt-in signal, and like any detector it misses some.

Updated 2026-10-14 · This page as Markdown