Security & guardrails

The boundaries that keep an automated agency assistant safe. Get these right before you put a runner in production.

Human approval on outbound

Prscnt drafts but never sends. Outreach, contracts, and invoices are produced for a human to approve and ship through your own connector. In a headless runner there's no human in the chat, so the approval prompt is replaced by a code gate:

Never wire an unattended agent straight to "send email" or "sign contract." A brand inbox is not a place for an unsupervised loop.

Read vs. mutating, again

Intelligence tools are safe to call from automation. Mutating tools (deals_update_stage, deals_bulk_create, the invoice_* and roster_* writers, voice indexing) change state and should be deliberate. When in doubt, have the agent propose the change and let a human confirm.

Credential boundaries

Workspace isolation

Your bearer token resolves exactly one workspace, server-side. You can't read another tenant's data, and you must never pass a workspace_id from the client — a mismatched id is rejected (WORKSPACE_MISMATCH). Treat the token like a password.

Securing your runner

If you run the orchestration runner, it's a public door to your API credits and your data. Before exposing it:

Shared intelligence is anonymized

The market intelligence you read is a composite — aggregated across many observations with minimum-sample thresholds — never a raw passthrough of any single party's data. You benefit from the corpus; no individual deal is exposed.

A safe-by-default checklist

Next