Updated 1 Oct 2026 · hosted in France (EU)
Security and trust.
Your agents’ mail is someone else’s personal data. This page says what protects it today, and marks what is still on our roadmap as planned. Agentboxd is a small company: we don’t hold SOC 2 or ISO 27001, and we don’t claim to.
sub-processors: 3
Three sub-processors. The core service is hosted in the EU. No analytics or trackers. Every processor is listed with exactly what it sees and when. See the list.
mx.agentboxd.com · FR
Where it runs
Hosted in the EU. What leaves it, and when, is on Privacy and data flow.
- Production server
- France · EU
- The API, both mail servers, the database and stored mail run on one dedicated virtual server at Contabo, in Lauterbourg, France.
- Backup server
- EU
- A second Contabo server receives an encrypted copy of every nightly backup. Nothing is stored outside the EU unless your AI setting sends it (below).
- Exposed to the internet
- 443 · 25 · 587 · 465 · SSH
- The website and API over HTTPS, the inbound mail server, SMTP submission and administrative SSH. The database and queue are never reachable from outside.
- Physical security
- Contabo
- Data-centre access and hardware are the hosting provider’s responsibility.
Strict-Transport-Security
Encryption
- TLS · HSTSIn place
- agentboxd.com and api.agentboxd.com serve HTTPS only, with automatically renewed certificates and HSTS for a year, subdomains included.
- STARTTLSIn place
- Our MX offers STARTTLS with a real certificate for mx.agentboxd.com. Outbound mail uses TLS whenever the receiving server supports it.
- SMTP submissionIn place
- Ports 587 and 465 refuse to accept a password (your API key) until the connection is encrypted.
- AES-256-GCMIn place
- The DKIM private keys of your custom domains are encrypted in the database with a key kept outside it.
- sha256In place
- API keys, session tokens and sign-in links are stored only as hashes. A key is shown once; we can’t show it again.
- HMAC-SHA256In place
- Every webhook is signed with a timestamp, so your endpoint can reject forged or replayed deliveries.
- Encrypted backupsIn place
- Every backup file is encrypted with GPG before it leaves the server, to a key we keep offline, so the backup server only ever stores encrypted files. The copies kept on the production server for fast restores are protected by access control, not encryption.
- Disk encryptionPlanned
- Encryption of the server’s disks, which the provider doesn’t offer by default. Under evaluation.
Authorization: Bearer mr_…
Access control
Who can reach your data: your own keys and sessions, and one named administrator on our side.
- No passwordsIn place
- You sign in with a single-use link that expires after 15 minutes. There are no passwords to leak or reuse.
- Scoped API keysIn place
- Limit a key to one inbox and to the permissions it needs (for example send and read only), and revoke it at any time.
- Workspace isolationIn place
- Every record belongs to a workspace and every query is scoped to it; another workspace’s ids answer 404.
- X-Requested-WithIn place
- Dashboard requests that change data must carry a CSRF header, so another site can’t act with your session.
- Restricted machine keysIn place
- The automated deploy key can only run the deploy script, and the backup key can only write to one folder on the backup server.
- MFA and access reviewsPlanned
- Multi-factor authentication confirmed on every provider account we use to run the service (hosting, DNS, code), and a written access review every quarter.
03:15 · nightly
Backups and recovery
- Nightly backupsIn place
- Database, stored mail, attachments and keys every night and before every deploy. A backup with an empty or unreadable database dump counts as failed.
- 14 days · off-siteIn place
- Kept 14 days on the server and on a second server. Anything deleted is gone from backups two weeks later.
- Automatic rollbackIn place
- A release that fails its health checks is rolled back to the previous one without anyone stepping in.
- RPO 24 h · RTO 8 hIn place
- Our targets: at most one day of data lost, service back within 8 hours if the server is lost. Targets, not an SLA.
- Restore testsIn place
- Every quarter the latest backup is restored into a throwaway database and checked against production: every table, and every stored email it points to. Last run 25 Sep 2026: passed.
- Full recovery drillPlanned
- A timed rebuild of the whole server from an off-site backup, to measure our 8-hour target end to end.
abuse@agentboxd.com
Monitoring and abuse
Every workspace shares our sending reputation, so abuse is stopped automatically. The mail checks together are Customs.
- fail2banIn place
- Hosts that probe our mail server for addresses or keep failing SMTP logins are banned at the firewall.
- Rate limitsIn place
- Per API key and session, per inbox and per workspace, plus limits on sign-in links per address and per IP.
- Gradual sending limitsIn place
- Owners are warned as a workspace nears a limit. Past a hard-bounce rate of 5% or a complaint rate of 0.1% over 7 days, its sending pauses until a person reviews it; receiving keeps working. Clear abuse suspends it.
- Agent self-signup limitsIn place
- When agents create their own workspaces: a proof of work per signup, limits per IP address and network, and until a person claims the workspace at most 20 new recipients a day and no webhooks. Idle unclaimed workspaces are deleted after 30 days.
- Logs without contentIn place
- Logs never contain message bodies, API keys, cookies or secrets.
- Health checks · 5 minIn place
- Every 5 minutes: the website and API (with the database, queue and storage), both mail servers, every service, disk space, last night’s backup and certificate expiry. A failure emails us at once, again every 6 hours until fixed, and when it recovers.
- Blocklists · feedback loopsIn place
- Our sending IP is checked against the main blocklists every hour. Microsoft reports spam complaints to us, and Google Postmaster Tools and Microsoft SNDS show how Gmail and Outlook rate our mail.
- Outside-in alertingPlanned
- Uptime checks from outside our server, so a full outage still reaches us, and alerts to a phone at any hour.
orgs.ai_processing
AI processing switch
One setting per workspace, changed by an owner. Every call to an AI provider checks it first, and a test fails the build if new code skips the check. Exactly what each level sends.
AI apps you connect yourself (for example Claude through our connector) act on your behalf and under your agreement with them; they are not our sub-processors.
- Off
- off
- No email content leaves the Agentboxd server.
- Categorize
- categorize
- JEV reads each inbound message to label it. This is the default.
- Full
- full
- Everything in Categorize, plus reply drafts written by DeepSeek.
orgs.local_processing
Document parsing
Attachments are read on our own server (text extraction and OCR), never by an outside service, and a workspace owner can turn it off. What local processing covers.
- Isolation
- worker thread
- Each document is parsed in its own thread with a memory cap and a time limit, one at a time on a separate queue.
- Hostile files
- limits
- 200 pages and 25 MB per document; Word and Excel packages are checked for decompression bombs before they are opened.
- OCR service
- internal network
- Runs on the same server with a memory limit, is never exposed to the internet and has no route out to it.
- Untrusted text
- untrusted: true
- Text from attachments is marked as untrusted input for agents and models, exactly like email bodies.
Authentication-Results
Prompt-injection defences
Email is written by strangers. We treat it as data at every step, and so should your agent. How the flags look.
- ai:injection-risk
- With AI processing on, every inbound message gets injection and phishing scores and labels before your agent reads it.
- dmarc-fail · spf-fail
- SPF, DKIM and DMARC are checked on every message and failures are labelled, so an agent can distrust spoofed senders.
- UNTRUSTED MESSAGE CONTENT
- MCP results mark mail as data, never instructions, and carry warnings when a message is flagged.
- Drafts never send
- Reply drafts treat the thread as untrusted, email can’t break out of its block in the prompt, the model has no tools, and a draft is only ever returned to you.
- sandbox
- The dashboard shows a message’s HTML in a sandbox with no scripts, forms or navigation. Attachments download; they never open on our domain.
Security review
Six questions to ask any agent email provider, and our answers
Security reviews ask these before an agent gets an inbox. Our answers say what works today and what doesn’t, plus a seventh question reviews now ask: who approved each send.
- Can I restrict exactly which addresses my agent sends to and receives from?
- Yes. Allow and block lists for receiving, sending and replying, per inbox or for the whole workspace, by exact address or by domain. With an allow list, every other address is refused: a send to it fails in the API, and inbound mail from it is labelled blocked and hidden from your agent.
- Do you check SPF, DKIM and DMARC, and can I keep failures out of my agent’s context?
- We check all three on every inbound message and label SPF and DMARC failures spf-fail and dmarc-fail; our MCP server adds a warning to those messages. We don’t hide failing mail ourselves today: your code skips it by its label, and a forwarding rule can skip mail that fails DMARC.
- What screens inbound content for instructions aimed at the model, and can a flagged message be held before my agent sees it?
- With AI processing on (the default), a classifier scores every inbound message for prompt injection and phishing and labels it ai:injection-risk or ai:phishing at 0.8 or more. Your agent can wait for the scores before it sees a message: claim with enriched: true, or react to the message.enriched event. We don’t hold flagged mail back ourselves: your code decides, and a forwarding rule can skip it. With AI processing off, there are no scores.
- Can I issue a key that reads but never sends, and can that key change its own restrictions?
- Yes, and no. A key gets only the permissions you pick, so a key with messages:read and without messages:send can read but never send, and it can be limited to one inbox. Keys are created and changed only from a signed-in dashboard session: no API key can create, widen or revoke a key. Leave lists:manage off an agent’s key, so it can’t edit the lists that limit it.
- Is my data isolated from your other customers, and is my sending reputation isolated too?
- Your data, yes: every record belongs to one workspace, every query is scoped to it, and another workspace’s ids answer 404. Your sending reputation, partly: on your own domain, mail is signed with your domain’s DKIM key, so the domain’s reputation is yours, but by default every workspace sends from our shared IP. That is why the abuse limits above apply to everyone. A dedicated sending IP is listed as an add-on on the pricing page.
- Where are my messages processed, who can access them, how long are they kept, and are they used for training?
- On our own server in France, unless your AI processing setting sends part of a message to an AI provider (above). One named administrator can reach the server; our operator console never shows message bodies, attachments or extracted text, and records every action. Mail is kept 30 days on Free, 1 year on Builder and 2 years on Team, or less if you choose; on Scale we agree it with you. We don’t train models on your mail. The contracts that bind our two AI providers to the same are still planned (see below): if that matters to you, keep AI processing off.
- Who approved each send?
- When a draft is approved, we record who approved it: the person, the API key, or the connected app and the person who authorised it, with the time and a hash of the exact content approved. The record stays on the sent message, and shows in the dashboard, the API and the draft.sent event. Drafts sent before 1 October 2026 have no approver recorded.
SOC 2 · not yet
Certifications and roadmap
No SOC 2 report or ISO 27001 certificate yet. Our policies and controls follow the SOC 2 criteria, and we answer security questionnaires: write to hello@agentboxd.com.
- Written policiesIn place
- 14 security policies (access, change, incidents, continuity, encryption, vendors, risk and more), reviewed every year.
- Controls mapped to SOC 2In place
- Each control is mapped to the SOC 2 Trust Services Criteria and marked in place, partial or planned.
- Data processing addendumIn place
- A GDPR Article 28 DPA you can request today.
- Contracts with AI providersPlanned
- Data processing terms and Standard Contractual Clauses with JEV and DeepSeek for transfers outside the EU.
- Dependency scanningPlanned
- Automatic alerts and updates for vulnerable dependencies, checked in CI.
- Penetration testPlanned
- An independent test of the API, mail servers and dashboard.
- SOC 2 reportPlanned
- Not yet. We will start an audit when customers need one, and say so here.
/.well-known/security.txt
Report a vulnerability
Write to security@agentboxd.com with what you found, how to reproduce it and what an attacker could do with it. We acknowledge reports within 3 working days, keep you posted until it’s fixed, and credit you if you want.
We won’t take legal action against research done in good faith that follows these rules: use only your own workspace and accounts; don’t read, change or delete other people’s data (stop and tell us if you reach any); no denial of service, no spam or phishing sent through our servers, no social engineering of our providers; give us reasonable time to fix before you publish.
Spam or abuse coming from an Agentboxd address goes to abuse@agentboxd.com instead.
GDPR
Contracts and processors
- Data processing addendum: Article 28 terms with our security measures, available on request.
- Sub-processors: who processes your data, where, and when; changes announced 30 days ahead.
- Privacy and data flow: what we store, what leaves the server, retention and deletion.