How a request travels
Each Slack thread runs in its own sandbox, and every outbound call from that sandbox passes through the same checkpoints.| Checkpoint | The guarantee |
|---|---|
| The sandbox | Runs on Anthropic’s infrastructure and holds no credentials |
| Agent Proxy | Injects credentials from the credential store at request time, and blocks traffic to unlisted hosts by default |
| Your systems | See the agent’s own accounts, so its actions there are attributable |
Compute and the sandbox
Sessions run in sandboxes Anthropic hosts, the same managed compute behind Claude Code on the web. Each Slack thread gets its own sandbox. When a thread goes quiet, its sandbox is released; replying in the thread builds a fresh one. What persists across that release and rebuild:- Persists: The thread, its visible work, and anything pushed to a branch, opened as a pull request, or posted into Slack.
- Does not persist: Files that existed only inside the sandbox. To keep generated files, ask Claude to push them to a branch or post them in the thread.
Credential storage
Credentials you provision are kept in a separate credential store, not in the proxy itself. When an outbound request matches a rule, Agent Proxy, the network layer between the sandbox and any external host, retrieves the credential from that store and injects it at the boundary, so the model and the sandbox are not given the key. This means:- A saved credential is not displayed again. The setup screens are write-only.
- The credential travels only to the hosts you named when you added the connection.
- You can narrow the credential further, to one host, one path prefix, or read-only methods, in Add connections.
Network egress
Outbound traffic from a channel session’s sandbox is default-deny. Requests go only to hosts an Owner allowed, either on the bundle’s Domains tab or through a connection’s Allowed websites, and every request gets one of three outcomes:- Matches a credential rule. The credential is attached at the boundary and the request proceeds.
- Matches only an allowlist. The request is sent without credentials.
- Matches nothing. The request is blocked outright; the host is unreachable rather than merely unauthenticated.
Service accounts
In channels, Claude acts under service credentials of its own. The Slack surface is the Claude app, code work goes through the Claude GitHub App, and every other tool gets a service account an admin provisioned. See How agent identity works for the full model. DMs with@Claude run on the user’s own claude.ai account with their personal connectors, and work there is attributed to that user. Admins can disable DMs organization-wide; see Allow or disable direct messages.
Member access
By default, anyone in a connected Slack workspace can invoke Claude in channels, with or without a Claude account. An Owner can narrow that to organization members only, or to members whose role grants it. The setting and the role-based configuration are on Members. It governs DMs as well as channels.Related resources
- How agent identity works: the identity model in full, including DM attribution
- Restrict where Claude Tag operates: the controls that exist and the ones that don’t
- Audit Claude Tag activity: the trails for tracing what it did