4 Agent 身份如何工作
Claude Tag 在 Slack 频道中使用自己的服务账户行动,而不是以你的身份。了解频道访问如何划定边界、凭证如何到达它,以及 DM 有何不同。
export const BetaNote = () => Claude Tag is in public beta. Features and behavior described here may change before general availability.;
Claude Tag 的身份取决于你在哪里给它发消息。
在 Slack 频道中,Claude 使用自己的服务账户行动,而非以特定用户的身份。组织 Owner 在设置过程中配置该身份,因此它在每个工作的系统中都有自己的账户:Slack 中的 Claude 应用、GitHub 上的 Claude GitHub App,以及所有其他连接工具中的服务账户。它采取的操作归属于这些账户;例如,消息来自 Claude 应用,pull request 显示 Claude GitHub App 为作者。
在用户与 @Claude 之间的直接消息(DM)中,配置的身份不适用。DM 仅支持一对一;不支持群组 DM。DM 没有可附加身份的频道作用域,因此 DM 会话改为在个人自己的 claude.ai 账户上运行,使用其个人连接器。GitHub 在归属方面是例外:从 DM 打开的 pull request 由 Claude GitHub App 创建,与频道中相同,但会话只能使用该用户自己账户上连接的代码仓库。Owner 可以在整个组织范围内禁用 DM;参见允许或禁用直接消息。
Claude 在频道中的行为方式(其固定指令、插件和频道记忆)与其身份分开配置;参见自定义指令、插件和记忆了解更多。
4.1 频道会话
当 Claude 处理频道任务时,涉及三个系统:
- 请求发生在你的 Slack 工作区中,当用户 @Claude 去做某事或计划任务启动时。
- Claude 所做的工作在 Anthropic 基础设施上的沙箱中运行,你的网络中不安装任何东西。
- Agent 对任何额外连接(如 GitHub 或数据仓库)的凭证到达那些系统以获取所需信息。组织 Owner 在配置身份时设置这些凭证。
下面的图示追踪了一个请求通过该流程的全过程。
用户要求 Claude 绘制上周注册用户的图表或修复部署测试。该请求启动一个新会话。
Claude 在 Anthropic 为该话题构建的隔离环境中工作,读取文件、编写文档和运行代码。你配置的凭证不会放入沙箱;它们留在凭证存储中,在代理处注入。
当工作需要沙箱之外的内容时,如调用 GitHub API 或查询数据仓库,请求经过 Agent Proxy——沙箱与一切其他事物之间的网络边界。Agent Proxy 根据管理员配置的规则检查它,决定是否继续以及携带什么凭证(如果有的话)。
匹配的凭证来自凭证存储,管理员的[连接](../admins/add-connections.qmd)保存在那里。保存后,凭证永远不会再次显示;Agent Proxy 仅在注入时刻检索它,并在边界处附加到请求上,因此模型和沙箱本身不会获得密钥。
带凭证的请求到达你的系统(如 GitHub 或数据仓库),结果返回到话题。
4.1.1 Agent Proxy
对于沙箱的每个出站请求,Agent Proxy 根据三层允许列表检查目标。任何一层允许,请求即通过;都不允许的主机被阻止。
| 当目标 | 结果 |
|---|---|
| 匹配某个连接的规则,即其允许的网站 | 代理附加该连接的凭证并转发请求。凭证留在代理处;模型和沙箱不会获得它。 |
| 在Access bundle的域名列表上,但不匹配任何连接 | 代理转发请求,不附加凭证。 |
| 被作用域会话运行的环境的网络访问设置所允许 | 代理转发请求,不附加凭证。 |
| 以上都不匹配 | 代理阻止请求。 |
新环境的网络访问级别默认为 Trusted access,因此新设置可以在管理员配置之前访问一组已记录的包注册器和开发者主机。云环境文档列出了覆盖的主机。要缩小该默认范围,将环境固定为更严格的级别,如 No access。
相同的规则适用于 Claude 在沙箱中运行的代码,如 curl 或 fetch 调用:除非主机被以上某一层允许,否则请求被阻止。
Agent Proxy 仅承载 HTTP 和 HTTPS。非 HTTP 协议(如 SSH 或数据库的原生线路协议)即使目标是允许的主机,也无法通过代理。
你的网络内部不安装任何东西。你的系统只看到使用 Agent Proxy 附加的凭证进行身份验证的请求。你的网络团队可能需要添加到允许列表的端点和地址,请参见网络要求。
4.1.2 网络搜索与网络请求
Claude 可以在频道中搜索网络,无需任何域名条目。网络搜索是 Anthropic 内置的网络搜索工具,在 Anthropic 的服务器上运行,而非频道沙箱中运行的代码。
沙箱不会为搜索发送任何新内容。搜索请求以与会话模型流量相同的方式到达 Anthropic,搜索在服务端进行。Agent Proxy 规则不适用于网络搜索;从沙箱获取页面或调用服务是出站网络请求,遵循这些规则。
搜索和打开页面是不同的操作。搜索返回匹配页面的内容,Claude 阅读并引用,因此它可以从搜索发现的页面中回答。打开一个 URL(无论你粘贴的还是搜索返回的)是从沙箱发起的 fetch,主机需要允许层。这就是为什么 Claude 可以引用通过搜索发现的页面内容,却报告无法打开同一链接。
组织 claude.ai 管理设置中的网络搜索能力设置管理 claude.ai 聊天;它不管理 Claude Tag 会话(无论频道还是 DM)。如果 Claude 报告在频道中无法到达某主机,解决方案是域名条目或该作用域的环境,而非该设置。
4.1.3 Agent 访问权限
Claude 在频道中能访问什么,来自管理员附加到该频道作用域的 Access bundle。频道中的任何人获得相同的能力,同一个请求在 #platform-eng 中能比在通用频道中做更多的事。
这种设计有四个结果。
- 一次配置。 作用域中的所有人可以立即使用。
- 可预测性。 Claude 能做什么从不因提问者不同而改变。
- 个人连接器仅在 DM 中适用。 共享频道仅使用管理员附加的服务账户连接,而非任何人 claude.ai 账户上的连接器。
- 清晰的审计。 连接工具中的操作显示在服务账户下,你的安全团队已经知道如何分析它。
该服务账户身份也是 Claude 在任何它行动的地方出现的方式。在 Slack 中,它以 Claude 应用的身份发消息。在 GitHub 上,提交和 pull request 显示 Claude GitHub App,pull request 链接回其来源的 Slack 话题。在所有其他连接服务中,操作显示在管理员配置的服务账户下,记录在该服务的审计日志中。
4.2 直接消息频道
与 Claude 的 DM 与频道工作方式不同。没有可附加身份的作用域,因此 DM 会话改为在你自己的 claude.ai 账户上运行——与 Claude Code on the web 的会话方式相同——使用你自己的连接器和凭证,结果归属于你(pull request 除外;DM 中的 pull request 也由 Claude GitHub App 创建)。该图与上面的频道路径形成对比;沙箱是同一个引擎,但周围的一切都是你的。
下表在四个维度上对比了两种路径。
| 在频道中 | 在 DM 中 | |
|---|---|---|
| 以谁的身份行动 | 自己的服务账户 | 你 |
| 访问权限 | 频道的 Access bundle | 你的个人连接器 |
| 归属 | Agent 的账户,在每个工具的审计日志中 | 你的名字,但 pull request 由 Claude GitHub App 创建 |
| 计费 | 组织 | 你的席位 |
其中三个差异值得详述。
- 连接器。 你账户上的连接器可用,包括你添加的 MCP 服务器。
- 计费。 使用量计费到你的席位而非组织的服务密钥。
- 频道侧配置。 它不会跟随你进入 DM;Agent 的连接和代码仓库授权在 DM 中不适用。
DM 工作在你的凭证下运行,因此大部分归属于你,只能访问你自己的账户能访问的内容。Pull request 是例外:Claude 在 DM 中也以 Claude GitHub App 的身份创建它们,因此代码仓库的历史显示相同的作者,而它能访问的代码仓库仍然只是你自己账户上连接的那些。
频道用于共享工作,DM 用于个人任务,或用于你宁愿使用自己的身份验证而非共享频道凭证来访问的数据。
4.2.1 Claude Tag 与 Slack 中的 Claude Code
与 Claude Tag 的 DM 在你自己的账户下运行,这也是 Slack 中的 Claude Code 的运行方式——将编码 @提及路由到 Claude Code on the web 上请求者自己账户下的会话。两者看起来可能完全一样。下表展示了如何区分它们。
| 频道中的 Claude Tag | Slack 中的 Claude Code | |
|---|---|---|
| 运行在 | 管理员配置的 Agent 身份 | 你自己的 Claude 账户,在 Claude 应用中链接 |
| GitHub | Claude GitHub App;pull request 属于该应用 | 你在 claude.ai/code 上的 GitHub 连接;pull request 在你的账户下打开 |
| 访问权限 | 管理员附加到频道的 Access bundle | 你的个人连接器 |
| 计费 | 组织 | 你的席位 |
如果你的工作区中 @Claude 以你的身份打开 pull request,你看到的是 Slack 中的 Claude Code,而非 Claude Tag 会话。
4.3 相关资源
- 安全与数据处理:凭证存储在哪里,什么离开了你的租户,什么在无人值守时运行
- 给 Claude 访问权限:配置本页描述的访问权限
- 限制 Claude Tag 的操作范围:收窄该 Agent 身份被允许行动的地方