How a request travels
Each Slack thread runs in its own sandbox. In an Anthropic-hosted environment, every outbound call from that sandbox passes through the same checkpoints.Compute and the sandbox
Sessions run in ephemeral sandboxes, the same infrastructure that runs 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 it.
- You can narrow the credential further, to one host, one path prefix, or read-only methods; see Restrict by path or method.
Network egress
In an Anthropic-hosted environment, outbound traffic from a channel session’s sandbox is default-deny. Requests go only to hosts an allow layer covers, and the layers are a credential’s allowed websites, the allowed domains that apply to the channel, and the network access setting of the environment the scope’s sessions run on. A new environment’s default level, Trusted access, already covers a documented set of package registries and developer hosts. See Agent Proxy for what happens to a request under each layer.* domain. The entry admits requests to any host on the ports it lists, still without credentials. Private and internal network addresses and cloud metadata endpoints remain blocked. See Allow all hosts.
Service accounts
In channels, Claude acts under service credentials of its own, not under the account of the person who tagged it. The Slack surface is the Claude app, code work goes through the Claude GitHub App, and every other connected tool uses a service account whose credential a connector holds. See How agent identity works for the full model. A connector’s credential belongs to that agent identity and is shared by everyone in the channels where it applies. Anyone in one of those channels can ask Claude to act with the credential, so whatever the connected account can read or write is available to every member of those channels. Connect a dedicated identity you control for each service, such as aclaude@yourcompany.example.com seat or a native service account, rather than a personal login. A dedicated account keeps the agent’s actions separately auditable in each tool’s logs and lets you revoke its access without affecting a person; see Create a dedicated account per service.
One-to-one DMs with @Claude from a member who has connected a Claude account run on that member’s own claude.ai account instead, with that member’s personal connectors, and work there is attributed to them, except pull requests, which the Claude GitHub App authors from DMs as well. For DMs from members who haven’t, see Direct messages from members without a Claude account. An Owner can turn off DMs for the whole organization; see Allow or disable direct messages.
Claude uses a user’s personal connectors in a channel only for that user’s own tasks, after the user allows it. The work runs with that user’s permissions and is recorded under their name. Requests other people make to Claude in the task’s thread run with the channel’s own access, not with that user’s connectors. Claude is designed to take direction from the connector’s owner, treating what other people post in the thread as information for the task rather than as instructions, and the owner can tell Claude in the task’s thread to stop. On the Enterprise plan, an admin can require the user’s review of every result before it posts. See Personal connectors in channels.
Isolate credentials between channels
A channel session can use only the access an admin applied in one of these places:- The channel itself. Access added on the channel’s page, or a bundle applied to the channel, reaches that channel only.
- The channel’s workspace. Access added on the workspace’s page, or a bundle applied to the workspace, reaches every channel of that workspace.
- All of Slack. Access added on the Slack page, or a bundle applied there, reaches every channel of every paired workspace. The first credential you add for a service on the Connectors tab is on here as soon as you save it. See how scopes inherit.
- A channel rule. A bundle an Owner applies to a channel name pattern reaches every matching channel in all of Slack or in one workspace, including channels created or renamed later.
- Apply it to that channel and nowhere broader. The first credential you add for a service on the Connectors tab applies in all of Slack as soon as you save it. To keep the credential out of other channels from the start, add it in one of these ways instead:
- In a bundle whose Where it applies list holds only that channel.
- From the channel’s page. Under Claude’s access, click Add and select Connector. On the dialog’s Connectors tab, select the service under Connect new and click Continue. The credential you enter in the connect form applies in that channel only.
- On the page of a connector already on the Connectors tab, select Add credential from the ⋮ menu at the top of the page. The new credential is off everywhere until you pick it in the channel’s row under Assign access, selecting Add place if the channel isn’t listed.
- Keep the channel private. Access on a public channel reaches anyone who joins.
- Open the channel from the Channels tab under Claude’s access at
claude.ai/admin-settings/claude-tagand check its Claude’s access table. It lists the access that reaches the channel, and an item a bundle brings is listed under that bundle’s row. The Inheritance column shows whether each bundle, and each item outside a bundle, was added on the channel’s page or inherited from the workspace or from Slack.
Artifact visibility
A session can publish an artifact, a web page hosted on claude.ai with the link posted in the thread, and the page stays available after the sandbox is released. Anyone with access to the source Slack channel can open it, which in a public channel covers everyone in the workspace. Someone who opens the link without that access can’t see the page and has no option to request access. There is no share setting for anyone to change. Updates go through Claude: ask in the Slack thread, or send Claude a comment on the page, which anyone who can post in the channel can do. While a Slack guest is in a channel set to Channel only, Claude doesn’t publish artifacts there. Artifacts you publish from your own Claude Code sessions work differently: they belong to you, and you control who can open them, with sharing options that depend on your plan and organization settings. See the Claude Code artifacts documentation.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 on the Advanced tab of the Slack page, which the Slack row on the Channels tab under Claude’s access opens:- Team plans: Restrict to your organization limits Claude to people with a Claude account in your organization
- Enterprise plans: Restrict to roles with Claude Tag access limits Claude to members whose role grants the Claude Tag in Slack capability
Related resources
- How agent identity works: the identity model in full, including DM attribution
- Data lifecycle and deletion: what Anthropic stores, how long it’s kept, and what each action deletes
- 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