Intelligence settings
The Intelligence settings page: what answers the Assistant, writes the Analytics overview and explains alerts, what AI tools can see, and how AI apps connect.
Intelligence chooses what answers questions in the Assistant, writes the Analytics overview and explains connection alerts. It also sets what AI tools can see, and how AI apps on this Mac can read Outbound’s figures and ask to change rules. The features themselves are described in Intelligence in Outbound.

Answers
Section titled “Answers”Answered by: a picker. Apple Intelligence is the default (an empty choice). Under it, Your Coding Agents lists agents installed on this Mac, and API Keys lists the providers below. An agent you had selected stays in the list even if it is no longer found.
- Apple Intelligence. A Status line reports availability. It is one of: “Ready. Analysis stays on this Mac.”, “Free-form questions need Apple Intelligence on macOS 26 or later.”, “On-device intelligence is unavailable on this Mac. Local facts are available.”, “Enable Apple Intelligence in System Settings for free-form questions.”, “The on-device model is not ready. Local facts are available.”, or “On-device intelligence is unavailable. Local facts are available.”
- Your Coding Agents. The picker can show Claude Code, Codex, Gemini CLI, Cursor, GitHub Copilot, OpenCode, Grok, Factory Droid, Goose, Kimi CLI, Qwen Code, Kilo, Cline and Auggie, whichever are installed. They answer with your own sign-in. No API key.
- API Keys: OpenAI, Anthropic, Google Gemini, OpenRouter, OpenAI-Compatible.
If none of those agents are installed, the note reads: “No agents found; install an Agent Client Protocol app to use your subscription.”
The footer says which service writes what. With Apple Intelligence or a coding agent selected: “Apple Intelligence and coding agents answer chat and Analytics; figures that fail checks use Outbound’s own summary.” With an API-key provider selected: “API-key providers write Analytics overviews and alert explanations. Alerts send only after you review each request. Chat uses Apple Intelligence on this Mac; records provide checked local answers.”
Choosing an API key provider
Section titled “Choosing an API key provider”Server: OpenAI-Compatible only. The placeholder is http://127.0.0.1:11434/v1. A server on this Mac (localhost, 127.0.0.1 or ::1) can use http:// and does not ask for a key. Any other server needs an https:// address and a key. For a plain http:// address on another device, the field warns “Unencrypted AI connections are allowed only on this Mac. Use HTTPS for a server on another device.” and Send figures and Test Connection stay off. Changing the address asks you to approve sending figures again.
Outbound also refuses a redirect to a different address or transport, so your key and figures go only to the server you entered. If a server redirects, the request fails with “The AI server redirected to a different address or transport. No credentials or figures were sent to that address.”
API Key: shown when a key is required, or when one is already saved. The field’s placeholder is “Paste your key”, with Save (disabled while the field is empty). Once saved, the row reads “Saved in your keychain” and offers Remove. The key is a login-keychain item on this Mac, available after the first unlock, and only on this Mac. Its label names Outbound, the provider, and “API key”. Remove reads “Removing…” while it runs. If the keychain refuses, the row stays and reports “Your keychain didn’t remove the key, so it is still saved. Try again, or remove it in Keychain Access.” If a save fails: “The key couldn’t be saved.”
Get a Key, for the four named providers, opens their key page. OpenAI-Compatible has none.
| Provider | Key page | Model placeholder |
|---|---|---|
| OpenAI | https://platform.openai.com/api-keys | gpt-6.1-sol |
| Anthropic | https://console.anthropic.com/settings/keys | claude-sonnet-5-5 |
| Google Gemini | https://aistudio.google.com/apikey | gemini-3.8-flash |
| OpenRouter | https://openrouter.ai/settings/keys | ~openai/gpt-sol-latest |
| OpenAI-Compatible | none | Model name |
Model: a text field. The placeholder is that default. A blank field uses the default when Outbound sends a request. OpenAI-Compatible has no default, so a blank model cannot be tested until you type one (“Choose a model for this provider.”).
Send figures to (provider): off until you turn it on. “Sends totals, app names, domains and countries; no IPs, full hosts, paths, rules or contents.”
Show What’s Sent… opens a sheet titled “What’s Sent to OpenAI” (with the provider’s name). It shows the exact request for the range you’re viewing in Analytics, with your key hidden: “These are the figures for the current range in Analytics. Your key is sent only to (provider).” If Analytics isn’t showing a range, the sheet says “Open Analytics and choose a range to preview its request.” With no model chosen, it says “Choose a model first.” Done closes it.
Test Connection sends a short request that asks for the single word OK. While it runs the button reads “Testing…”. Success is “Connected to OpenAI” (or the provider’s name). Failure is the provider’s error, for example “Add an API key for this provider first.” or “The provider did not accept the key (401). Check it and try again.”
Choosing a coding agent
Section titled “Choosing a coding agent”Status: “Installed” with the tool’s path, “Not found on this Mac”, or a spinner while Outbound is still looking.
Profile: Claude Code only, and only when more than one profile folder exists. Each row is “/” plus the folder name. The help text: “The Claude Code profile you’re signed in with (its folder in your home folder)”. The default profile (/.claude) is the empty choice.
Answer with (agent): off until you turn it on. “Sends figures and questions to (vendor) under your sign-in; rule changes ask first; file reads and commands are refused.” No API key is needed. Agent access expands to explain: “Uses MCP in an empty folder; Outbound refuses file reads, commands and other changes.” and “The agent’s own settings decide what it may do without asking.” The vendor in that sentence is Anthropic, OpenAI, Google, Cursor, GitHub, xAI, Factory, Moonshot AI or Augment Code, or “the model you set up in” the agent’s own name for OpenCode, Goose, Kilo, Cline and Qwen Code.
Test (agent) starts a session, asks it to reply with the single word OK, and waits up to 120 seconds. Success: “(Agent) is ready.” An empty reply: “(Agent) didn’t reply.” The button is disabled until the agent is found, and reads “Testing…” while it runs.
AI apps
Section titled “AI apps”Rule changes: Ask Me Each Time (default) or Off. Ask Me Each Time: “Rule changes wait for your approval after Outbound shows exactly what would change.” Off: “AI apps can read figures but cannot request rule changes.” The approval prompt is on Approving changes from AI apps.
Let AI apps see host names: off by default. Off: “AI tools and structured CLI replies show registrable domains. IPs and CIDRs become ‘address’; local names become ‘local network’. Rules follow the same policy; paths and user names stay hidden.” On: “With –detail hosts, MCP includes full host names, IP addresses, CIDRs and local names. Paths stay app names; user names stay hidden.” Turning it on changes nothing by itself: an AI app sees host names only when its server runs outboundctl mcp --detail hosts. See What AI tools can see.
Add Outbound to: Claude Code, Claude, Cursor, Codex, Gemini CLI and VS Code. Each runs the installer inside the app. The button reads “Adding…” while it runs, and the tool’s own result appears under the row. If that tool is missing from this copy: “Outbound’s command-line tool isn’t in this copy of the app.” If it has not finished in 30 seconds: “Adding Outbound took too long and was stopped.” An empty result reads “Done.”
Command: the path of outboundctl inside this copy of Outbound (Contents/MacOS/outboundctl) followed by mcp, in a monospaced field, with Copy. It is the full path, not the bare name outboundctl.
The footer: “MCP apps see Analytics figures and rules, never connection contents.” The command line’s side of this is on mcp.