Change Insights settings
const url = 'http://127.0.0.1:8080/v1/insights/settings';const options = { method: 'PATCH', headers: { 'Deedglass-Version': '2026-10-01', Authorization: 'Bearer <token>', 'Content-Type': 'application/json' }, body: '{"anomaly_facts":true,"reason":"Let refund-approval-over-30 send anomalous agents to approval."}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request PATCH \ --url http://127.0.0.1:8080/v1/insights/settings \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --header 'Deedglass-Version: 2026-10-01' \ --data '{ "anomaly_facts": true, "reason": "Let refund-approval-over-30 send anomalous agents to approval." }'Changes the fields you send and seals an insights.settings_changed admin deed with the reason, because the settings change what policies see (deed in the answer; absent when nothing changed, and then nothing is sealed). reason is required, 3 to 280 characters (400 validation_failed on reason); anomaly_active_minutes is 5 to 1,440 and anomaly_stale_after_minutes 10 to 240 (400 validation_failed on the field). Unknown fields are 400. Bodies up to 16 KiB. An admin+ Console session (with the Deedglass-CSRF header) or an org admin key (admin scope); viewers get 403 insufficient_role and agent keys 403 insufficient_scope.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Header Parameters
Section titled “Header Parameters”The API version (YYYY-MM-DD). Leave it out to use your org’s pinned version (public routes use the latest). An unknown version is 400 api_version_invalid.
Needed when the request uses a Console session (it changes state); without it the answer is 403 csrf_failed. Not sent with an API key.
Request Bodyrequired
Section titled “Request Bodyrequired”The fields to change, and why.
object
True without DEEDGLASS_ANTHROPIC_API_KEY on the server is 400 validation_failed on llm_phrasing.
object
One line
Example
{ "anomaly_facts": true, "reason": "Let refund-approval-over-30 send anomalous agents to approval."}Responses
Section titled “Responses”The settings after the change, with the deed when something changed.
object
This org’s policies see anomaly.*. Off by default.
How long an episode stays active after its last finding (default 60).
With the facts on, a detection pass older than this makes every agent anomalous (detector_stale), because unknown isn’t usual (default 15).
The enforced or shadow policy reads anomaly.*.
The sentence when a policy reads anomaly facts but they are off.
S28: Claude may reword suggestions (off by default; needs the operator’s DEEDGLASS_ANTHROPIC_API_KEY).
The month’s phrasing spend cap in cents (default 200).
Who gets the weekly digest (default owners).
object
The server has an Anthropic key
S28: the org’s history came from deedglass dev simulate (the Console shows a banner).
PATCH only, when something changed: the insights.settings_changed admin deed.
Examples
Anomaly facts turned on
{ "object": "insights_settings", "anomaly_facts": true, "anomaly_active_minutes": 60, "anomaly_stale_after_minutes": 15, "active_policy_reads_anomaly": true, "notice": null, "deed": "deed_01m42vmk0m2p4r6t8v0x2z4c6e"}Headers
Section titled “Headers”This request’s id. Quote it to support; it matches error.request_id.
The API version this response follows.
A missing or bad field.
object
object
One or more calm sentences with the next step.
The request field, query parameter or header the error is about.
On policy_invalid only. Each problem with its line, code and hint.
One finding about a policy file, with its position and the next step. Codes are stable and listed in docs/POLICY_ERRORS.md. In the policy_invalid error envelope each diagnostic also carries object: policy_diagnostic. The full PolicyDiagnostic schema is in openapi.yaml.
object
One agent action. Its sections mirror the deed’s. status is the one field an agent needs; state is the exact lifecycle state (docs/GATE.md). The Gate’s own responses (POST /v1/actions and its result report) add execution.result and witness.reasons; lists leave both out. The full Action schema is in openapi.yaml.
object
On undo_unavailable only. Every check of the undo, each with its fix. Additive (S23).
One of the twelve safety checks (S23 §3.3). Available means no check failed. The full UndoCheck schema is in openapi.yaml.
object
Example
{ "error": { "type": "invalid_request_error", "code": "validation_failed", "message": "anomaly_active_minutes must be 5 to 1,440.", "param": "anomaly_active_minutes", "request_id": "req_01m42vmm1p3r5t7w9y1a3c5e7g", "doc_url": "https://docs.deedglass.com/errors/validation_failed" }}Headers
Section titled “Headers”This request’s id. Quote it to support; it matches error.request_id.
default
Section titled “default”An error. Every error has this envelope; doc_url explains the code.
object
object
One or more calm sentences with the next step.
The request field, query parameter or header the error is about.
On policy_invalid only. Each problem with its line, code and hint.
One finding about a policy file, with its position and the next step. Codes are stable and listed in docs/POLICY_ERRORS.md. In the policy_invalid error envelope each diagnostic also carries object: policy_diagnostic. The full PolicyDiagnostic schema is in openapi.yaml.
object
One agent action. Its sections mirror the deed’s. status is the one field an agent needs; state is the exact lifecycle state (docs/GATE.md). The Gate’s own responses (POST /v1/actions and its result report) add execution.result and witness.reasons; lists leave both out. The full Action schema is in openapi.yaml.
object
On undo_unavailable only. Every check of the undo, each with its fix. Additive (S23).
One of the twelve safety checks (S23 §3.3). Available means no check failed. The full UndoCheck schema is in openapi.yaml.
object
Example
{ "error": { "type": "invalid_request_error", "code": "not_found", "message": "There's no endpoint at GET /v1/helth. Did you mean /v1/health?", "param": null, "request_id": "req_01j9zr3m5k8q2w7x4t6v0b1c9d", "doc_url": "https://docs.deedglass.com/errors/not_found" }}Headers
Section titled “Headers”This request’s id. Quote it to support; it matches error.request_id.
The API version this response follows.