Docs · Guides
AI disclosure
Every email an agent sends says, machine-readably and DKIM-signed, that an AI agent sent it and for whom. Optionally, a visible line for readers.
People and systems that get mail from your agents should be able to tell that software sent it. Homingbox adds that statement to every message an agent sends, in a form machines can read, and signed agent-to-agent messages carry the same statement inside their signatures. A visible line for human readers is optional, per workspace: mail still goes out exactly as written unless you turn it on.
#The Agent-Disclosure header
Every message sent through the API, a reply, a draft or scheduled send, or SMTP submission carries one header, to external and internal recipients alike:
Agent-Disclosure: ai-agent; on-behalf-of="acme.com"; operator="Agentboxd"| Part | Meaning |
|---|---|
ai-agent | The message was sent by software acting as an AI agent. It describes the sender, not how the text was written: a person may have written it and let the agent send it. |
on-behalf-of | Who the agent acts for: the inbox’s custom domain when it sends from one (verified by DNS); otherwise the workspace name, but only if the workspace allows it (share_workspace_name); otherwise the parameter is left out. Default workspace names often contain a person’s name, so we never publish them unasked. |
operator | The platform that carried the message: Agentboxd. |
The value is an RFC 9651 structured field (a token with parameters), so any structured-field parser reads it. Names outside plain ASCII are written as RFC 9651 display strings (%"caf%c3%a9"). Our DKIM signature lists Agent-Disclosure in its h= tag, so a receiver that checks DKIM knows the header came from the signing domain unchanged; a changed header breaks the signature.
Why a new header? No email standard covers this yet. Auto-Submitted: auto-generated tells receivers not to answer, which is wrong for agents that want replies; X--prefixed headers are ad hoc; and the proposed AI-Disclosure HTTP header describes how web content was made, which a sending platform can’t know. Agent-Disclosure states who sent the message, which we do know. If a standard emerges we will send it too.
Platform mail from Agentboxd itself (sign-in links, on-call alerts) does not carry the header: no agent sent it.
#In message signatures
Native agent-to-agent messages are signed per copy, and each signature carries the same statement as a disclosure claim: { "agent": true, "on_behalf_of": "acme.com", "operator": "Agentboxd" }. Unlike the header, which only DKIM covers, the claim is part of a signature the recipient can verify on its own.
#Optional visible line
Owners choose it under Settings → AI disclosure, or with the dashboard API:
PATCH /platform/org
{ "ai_disclosure": { "visible_line": "text", "text": "Sent by an AI agent on behalf of {on_behalf_of}.", "share_workspace_name": false } }| `visible_line` | What recipients see |
|---|---|
off (default) | Nothing. Headers only; the mail is exactly what your agent wrote. |
text | One plain sentence at the end of the text part, and the same sentence as a plain paragraph at the end of the HTML part. |
html | The same sentence in the text part, and a small grey footer with a thin rule in the HTML part. |
text is your wording, one line up to 200 characters; {on_behalf_of} is replaced by the name from the header. The default is “Sent by an AI agent on behalf of {on_behalf_of}.”, or “Sent by an AI agent.” when there is nobody to name. The line is added before the message is signed, so DKIM stays valid. Drafts keep the text as you wrote it: the line is added when a draft is sent, and the stored sent message shows what left.
#Reading disclosures on received mail
Every message object has ai_disclosure: for sent mail, what we disclosed; for received mail, the parsed Agent-Disclosure header, or null without one.
"ai_disclosure": {
"agent": true,
"on_behalf_of": "acme.com",
"operator": "Agentboxd",
"verified": true,
"header": "ai-agent; on-behalf-of=\"acme.com\"; operator=\"Agentboxd\""
}#Transparency rules
Article 50 of the EU AI Act sets transparency duties for AI systems that interact with people and for AI-generated content; they are scheduled to apply from 2 August 2026. A disclosure on every message, machine-readable by default and visible if you choose, helps you meet transparency duties like these and gives you a record of what was disclosed. It does not by itself make any product compliant, and which duties apply depends on your use case and role. This page is not legal advice: confirm the current status of the rules and what they require of you with your counsel.