Trust

Security and data handling

Last updated 2 November 2026 · Early-access version · Applies to aibotoffice.ai

This page is for the person answering a vendor questionnaire about Bot Office. It says what the service stores, what it never stores, how keys and credentials are protected, how bots are kept from doing damage, and how to report a problem. It describes the code as it runs today; where something is planned and not built, it says so. The privacy policy has the legal side (controller and processor, your rights).

1. In short

2. Stored and not stored

DataKept?Detail
Office name, website address, kit and brand colorsStoredTo name and theme the office
Bot ids, display names, roles and platformsStoredBot id at most 64 characters
Events: event name, status, run and correlation ids, counts, minutes saved, cost, timestampsStoredOnly the fields in the event schema; anything else in the request is dropped during validation. Metadata keys outside an allow-list (platform, model, cost_usd, tokens, tags, kind) are dropped
Event task title and messageStored, scrubbedAt most 80 and 140 characters, with personal data replaced (section 3)
Tasks on the work queueStored as writtenTitle at most 80 characters, details 1,000, outcome 500. Not scrubbed: write labels, not records
Messages between people and botsStored as writtenAt most 500 characters; the last 50 per bot are kept, read or unread, and the oldest is dropped
Office memory notesStored as writtenAt most 2,000 characters and 100 notes per office. Text that looks like a key, token or password is refused, not stored
Routines (a task template and its schedule)Stored as writtenAt most 30 per office; the task they make follows the task limits
Webhook endpoints: URL, event types, format (JSON, Slack or Teams), last delivery statusStoredAt most 5 per office, https and public hosts only; answers hide the URL's query. The signing secret is stored encrypted (below)
Decision links in approval webhooksStored as hashesOnly the SHA-256 of the link, bound to one action and its parameters; expires within 24 hours, single use, and deciding still needs the approver key or office access code
Office access codes, view keys, bot links and approver keysStored as hashesSHA-256 only (section 4)
Credentials for tools you connect, webhook signing secretsStored encryptedAES-256-GCM (section 5); never returned
Action records: which bot asked, the action and its parameters, the reason, tier, decision, approvers' names and notes, resultStoredParameters at most 16 KB in all, unknown parameters refused, anything shaped like a password or key removed from text parameters; reason and notes at most 240 characters, scrubbed
Rate-limit countersStored as keyed hashesOf the credential or the IP address, never the address itself
Prompts, model outputs, chat transcripts, call recordings, email bodiesNot storedThey are not part of any request the office accepts
Request bodies beyond the schema and capsNot storedUnknown fields are discarded; a request over 16 KB is refused outright; longer text is cut to its limit and the sender is warned
Credentials in memory notesNot storedRefused with an error that says why
Keys in clearNot storedExcept view keys of offices created before hashing, until their first rotation
Decrypted connection credentialsNot storedThey exist only in memory during one call to your tool
Data a read action returns from your toolNot storedIt goes back to the bot that asked and nowhere else
Cookies, analytics, tracking pixelsNot usedThe site sets no cookies and runs no third-party scripts

3. Personal data in text

Before an event's task title or message is stored, anything that looks like an email address, a phone number, a US social security number or a payment card number (13–19 digits that pass the card checksum and are not part of an id) is replaced with a placeholder. In ids (run, correlation and bot ids) the same matches become redacted- plus a keyed hash, so related events still group together but the original cannot be read back without our server secret. Other long numbers, such as bank account numbers, are not detected. The same scrub runs on action reasons, approver notes, results and error text. Tasks, messages and memory notes are stored as written, so keep customer records in your own tools and send labels.

4. Keys and access

KeyWhat it doesHow it is kept and sent
Office access code (bo_live_…)The owner's key: settings, bots, connections, approvals, export, deleteShown once when the office is made or the code is rotated; we keep only its hash and cannot show it again. Sent only in the Authorization header, never accepted in an address. Refused on bot links and for bot actions
View key (share link)Watch the office, read onlyHashed. Pages carry it after # in the link, which browsers do not send to servers, and send it to the API in the X-Bo-View-Key header. An old ?k= link still works; the page moves the key into the # part at once
Bot link (bi_…)One bot reports and acts as itself, nothing elseHashed. Sent as a header where the bot's platform allows. Platforms that cannot set headers use the documented path form (/v1/in/<token>/…, /mcp/<token>); that is the one place a key travels in an address, and it shows up in hosting request logs, so prefer the header form. Revocable one by one
Approver key (ap_…)One named person approves or rejects actionsHashed, shown once, sent only in the Authorization header. Revocable at once

5. Connection secrets

6. Actions and approvals

Bots act only through connections the owner added, and only inside the powers each bot is given (by role, with allow and deny patterns). Each action in the catalog has a risk tier:

TierDefault gate
0 ReadRuns within the bot's powers
1 Low, reversibleRuns within the bot's powers and limits
2 Reversible changeRuns automatically only when the owner allows it for that bot (the highest automatic tier is 2), else waits for approval
3 High impact (texts, calls, refunds, invoices, external Slack posts, stopping a server)Waits for a named human approver, who sees the full request
4 Destructive or irreversibleTwo distinct approvers (the two-person rule, on by default) and the action's name typed out to confirm

7. Webhooks

Outbound webhooks (up to 5 per office, https only, public hosts only) are signed. Each delivery carries X-BotOffice-Timestamp (unix seconds) and X-BotOffice-Signature: sha256=<HMAC-SHA256 of "timestamp.body" under the hook's secret>. Receivers should check the signature in constant time and refuse timestamps more than five minutes old. The secret is shown once and stored encrypted; an address that carries a user name or password is refused. Deliveries time out after 5 seconds, are retried once on a network error or a server error, and a hook that fails 20 times in a row is switched off.

8. Headers and the browser

9. Rate limits and size caps

WhatLimit
Events per credential (one bot link or the access code)600 a minute
Events per office, all credentials together1,800 a minute
Action requests per bot, over HTTP and MCP together60 a minute
New offices per client10 an hour and 30 a day, plus a site-wide hourly ceiling
Brand previews per client30 an hour
Key rotations per office10 an hour
Request size16 KB; known platform messages up to 1 MB, cut down to ids and status words before anything is kept

Wrong keys on the office view are counted per client, so guessing slows down. A refused request says why, and a rate-limited one says when to retry (Retry-After).

10. Isolation and outbound requests

11. Retention, export and deletion

DataKept for
EventsUntil the office is deleted. A daily job that deletes events older than 90 days is built but not switched on yet; the privacy policy will say when it is
Hourly activity counts7 days
Read messages14 days
Brand previews not saved to an office24 hours
Action records and their historyUntil the office is deleted, as an audit trail
Everything else (office, bots, keys, connections, tasks, notes, settings)Until removed or the office is deleted

12. Sub-processors

ProviderPurposeLocation
Netlify, Inc.Hosting, serverless functions, and storage (Netlify Blobs) of all office dataUnited States
Google FontsFont files for the websiteGlobal CDN

The tools you connect receive the requests your bots' actions make; they are your providers, not ours. The full list and its change rule are in the privacy policy.

13. Certification and known limits

No third-party certification yet. Bot Office has no independent audit report or certification today, and this page does not claim one. What we can say is what the code does, as above. Known limits, so you can weigh them:

14. Report a vulnerability

Email security@aibotoffice.ai with what you found and how to reproduce it. We answer within two business days and will not pursue good-faith researchers. Please do not test against offices that are not yours; make your own office for free on Build my office. For privacy requests write to privacy@aibotoffice.ai.

See the honesty standard for how we label what is real and what is planned.