Privacy and consent
The built-in chat is designed so you always know what leaves your machine. This page is precise about it: where traffic goes, what travels with each message, what never does, and how your keys are handled.
Your key, your provider, no middleman
The chat is bring-your-own-key only. Every request goes straight from the app to the provider you chose, using your own API key or your local Claude Code CLI. Nothing routes through Brilliant's servers, and there is no hosted Brilliant AI. You pay your provider directly, and your prompts reach only that provider.
Where your keys live
Keys are stored locally in your OS credential store (macOS Keychain, Windows Credential Manager) and are sent only to that provider's own API endpoint. Brilliant also reads provider environment variables as a fallback (ANTHROPIC_API_KEY, OPENAI_API_KEY, GOOGLE_API_KEY, OPENROUTER_API_KEY).
A key you paste never appears in a chat transcript, in the conversation history, or in your prompt drafts. When you set one up from inside the chat, the pasted key is stashed straight into the credential store and is not echoed into the conversation.
Explicit consent, by default
Outbound chat traffic is explicit-consent only. Brilliant does not quietly attach a screenshot of your screen, your system info, your app version, your recent files, telemetry, or any other ambient context. Beyond your prompt and the canvas context described below, the default is to send nothing extra.
What travels with a message
There are exactly three things that can go out with a message, and you control all three.
1. Canvas context (text)
So the model can see the work in progress, Brilliant includes a text outline of the canvas: a depth-limited structural outline of the elements in Brilliant's Blueprint (not the full tree, and a large canvas is condensed into a compact summary), the design-system tokens, the component catalog, and the element count. This is text, not an image. No screenshot of the canvas or your screen is captured for it.
How often it goes depends on the provider. With an API-key provider (Anthropic, OpenAI, Google, OpenRouter), a fresh outline travels with every message. With an in-app CLI provider (Claude Code, Codex), it goes with your first message only; later messages carry nothing extra beyond a short note if you switch to a different canvas.
Your current selection is not part of this. The model sees a specific element only when you attach it yourself (an @ mention or paste) or when it calls a tool to read the selection. To send a prompt with no canvas context at all, start the chat in an empty workspace.
2. Attachments you add (opt-in)
Anything you attach is something you chose to attach, and each shows as a chip above the input with an X to remove it before sending:
An element attachment (via
@mention or paste) sends that element's Blueprint plus a PNG render of just that element.An image or file attachment sends exactly what you added.

3. Automatic self-review screenshot (after edits)
After the agent applies a block of changes, Brilliant renders a screenshot of those changed elements and sends it back to the model so it can check its own work (spacing, contrast, alignment, clipping). This is a render of the design content only, never your screen or other apps. Text-only models never receive it, and it is suppressed for the rest of a session once an endpoint rejects image input.
The one number Brilliant counts
The three things above all go to your provider, never to Brilliant. What does reach Brilliant is contentless. Because the built-in chat is free up to a daily limit, the app reports a running count of the messages you send: a bare number, with no prompt, no canvas, and no response attached. Alongside it, the app checks which plan you are on, and the usage analytics described in Security and your data carry things like a message's character count, never its text. The count is what enforces the Free plan's daily cap, covered in Plans and billing.
What is never sent
Brilliant never attaches, on its own:
A screenshot of your screen, desktop, or other applications.
System information, hardware details, or the app version.
A list of your recent files or your file system.
Telemetry or usage analytics riding along with your prompt.
Your API keys, in any transcript, history, or draft.
Playground mode sends nothing
With no provider connected, the chat runs in Playground mode, which replays bundled demo conversations locally. There is no network call and no model request at all while a demo is the active path.
Sending feedback
The feedback card (covered in What the AI can do) follows the same explicit-consent rule as the chat. Opening the card sends nothing. Your message leaves only when you press Send, and the optional extras (your app version, a recent error log, the chat transcript, a canvas screenshot) attach only per item, when you tick them: an unticked screenshot is never even captured. Exactly what a submission carries over the network, and the periodic prompt check that rides beside it, are listed in Security and your data.
A note on Quiver
AI vector generation and image vectorization use a separate Quiver key, set up the same bring-your-own-key way. It follows the same rule: traffic goes to Quiver's own endpoint using your key, and nothing routes through Brilliant.
Next
See what the agent does with all this: What the AI can do.
Manage your keys and providers: Providers and models.