circuit_breaker_open
What you’ll see
The proxy returns:
{
"error": "Permission denied",
"reason": "circuit_breaker_open",
"correlation_id": "..."
}In the dashboard, the agent appears with status Suspended and a red badge. The Audit log shows three consecutive failures immediately preceding the suspension.
The agent’s MCP host (Claude Desktop, Claude Code, etc.) will report back through the tool — the response is the JSON above; how your host surfaces it depends on the host.
Why
The circuit breaker is the platform’s safety net for agents that have gone off the rails. It trips after 3 consecutive failures in a row. Failures include:
- Signature verification failed (
invalid_signature) - Scope was denied (
scope_not_granted) - The proxy itself errored (
upstream_request_failed) - The upstream SaaS returned a 5xx that the proxy couldn’t retry past
A single successful call resets the counter to zero, so a healthy agent never trips. The breaker stays open until a human reactivates the agent — there is no time-based decay. This is intentional. We want you to investigate before the agent resumes.
See The auto-suspension safeguard for the design rationale.
Fix
- Open the agent’s detail page in the dashboard.
- Click Audit log and look at the three failures immediately
before the suspension. The
reasonandmetadatacolumns explain what each call was trying to do and why it failed. - Address the underlying issue:
- If it’s a missing scope, grant the scope in the permission matrix.
- If it’s
invalid_signature, re-issue the agent’s keypair (see Re-install on another machine). - If it’s upstream timeouts, check the platform’s status page.
- Click Reactivate on the agent’s detail page. The agent immediately becomes callable again with its failure counter reset to zero.
Related: Presidio circuit breaker
There’s a second, internal circuit breaker inside the PII redaction
module that protects the proxy from a flapping Presidio service. That
one is process-wide (not per-agent) and only affects orgs with the PII
beta enabled. It surfaces as a PII redaction 502,
not circuit_breaker_open. Don’t confuse the two.