安全Reference

The safety model

An assistant can be wrong. The system around it decides how much that costs.

保留

A write arrives as 保留 — pending. It stays that way until you approve it, or until it expires 48 hours later.

承認

1. Everything is created paused

Campaigns, ad sets and ads are created in a paused state, always. There is no flag to skip it. You turn on spend in the platform, or by asking for a resume — which is itself a proposal.

2. Every write becomes a proposal

A write never goes straight to the platform. It goes through five steps:

  1. Dry run. The payload is validated against the platform without changing anything.
  2. Preview. You get a summary, a field-level diff (before and after), the expected impact and any warnings.
  3. Approval. Under direct policy your confirmation in the chat is the approval. Under inbox the proposal waits on the Approvals page.
  4. Execution, once. Every proposal carries an idempotency key and is claimed atomically. A retry — from a flaky connection, an impatient client, a second tab — cannot execute it twice.
  5. Read-back. Adako re-reads the object and reports what exists, not what it sent.

A pending proposal expires after 48 hours. Expired proposals never run.

3. No deletes

There are no delete tools in v1. Pausing never routes to a removal. The single exception is removing negative keywords, which requires an explicit confirmation flag in the call.

4. Numbers stay in your currency

Money at the tool boundary is a decimal number in the account currency — never micros, never cents. IDs are strings, so nothing is mangled by rounding. Dates are exact; a report never silently shifts a window.

5. Free text never reaches a write

Locations, interests and audiences are resolved to platform IDs by a separate read tool before any write can use them. If a name is ambiguous, Adako lists the candidates and stops.

6. Tokens stay on the server

Platform refresh and access tokens are encrypted with a per-tenant key wrapped by a master key, stored server-side, and decrypted only for the call that needs them — each decryption leaves an audit row. The MCP server never forwards a platform token to a client, and arguments are redacted before they are logged.

7. Every call is on the record

Each tool call is recorded with its tool name, status, duration and cost. You can read the recent ones on Usage, and every proposal keeps its preview, decision, result and read-back.

What Adako will not do

  • Change a budget, bid or status without a proposal.
  • Invent an account ID, a conversion number or a benchmark.
  • Retry a create after a timeout.
  • Write ad copy on the server — your assistant writes it, Adako only checks it against the platform limits.