Skip to content

agent_stopped

Step 7: the key is valid, and someone used Stop on its agent (STOP.md).

HTTP 403 · permission_error · not retryable

Step 7: the key is valid, and someone used Stop on its agent (STOP.md). It takes precedence over agent_suspended. GET /v1/whoami still answers and shows "status": "stopped". The message never includes the stop reason or who stopped the agent: the caller is the agent, and the reason may be sensitive.

On POST /v1/actions the attempt is still recorded: the action goes evaluated → denied → sealed with the stop decision (decision.source: stop), and the envelope carries the sealed action in error.action. The Ledger shows what a stopped agent tried to do. An action that waits for approval is checked again when someone approves it: if the agent or org is stopped by then, it ends denied the same way and never runs.

Find out why it was stopped: the reason is in the agent.stopped deed and in Console › Agents. An admin can start it again, with a reason, in Console › Agents or with deedglass agent start <name> --reason "…".

HTTP 403 · agent_stopped
{
"error": {
"type": "permission_error",
"code": "agent_stopped",
"message": "Agent \"support-bot\" is stopped. Deedglass refuses its calls until an admin starts it in Console › Agents.",
"param": null,
"request_id": "req_01j9zr3m5k8q2w7x4t6v0b1c9d",
"doc_url": "https://docs.deedglass.com/errors/agent_stopped"
}
}

The message is for a person and can get more exact over time: branch on type and code, never on the message.

SDK Raised as
TypeScript (@deedglass/sdk) PermissionDeniedError with code === "agent_stopped"
Python (deedglass) deedglass.PermissionDeniedError with .code == "agent_stopped"