Claude Code跨会话消息传递功能解析:使用条件、操作方法与限制说明 Claude Code跨会话消息传递功能全解析使用条件、操作方法及限制说明向你的其他Claude Code会话发送消息Claude可以列出并向你在同一台机器上的其他Claude Code会话发送消息还能通过远程控制功能回复你在其他机器或网页上的会话。跨会话消息传递功能需要Claude Code v2.1.224或更高版本并且仅支持macOS和Linux系统。当会话满足这些要求时该功能会自动开启无需额外设置。有关提供商的要求以及如何确认会话是否支持该功能请参阅“可用性”部分。跨会话消息传递允许Claude将一个Claude Code会话中的消息传递到另一个会话。当一个会话中的更改影响到另一个会话的构建时Claude可以在你发现之前提醒该会话。当一个会话解决了另一个会话遇到的问题时Claude可以将答案传递过去。消息是Claude之间传递的一段文本不包含对话历史或文件。若要转移整个对话或其上下文请使用[恢复会话](/docs/en/sessions#resume-a-session)功能。Claude使用两个工具来实现这一功能ListAgents用于发现可访问的代理SendMessage用于按名称向其中一个代理发送消息。通过相同的SendMessage工具Claude还可以向单个会话或团队中的[子代理](/docs/en/sub-agents#resume-subagents)和[代理团队](/docs/en/agent-teams)成员发送消息。本页面主要介绍独立会话之间的消息传递。何时使用跨会话消息传递当你的某个会话在执行任务过程中获得了其他会话所需的信息时可以使用消息传递功能。Claude会在需要时自动发送消息例如在进行影响其他会话工作的更改之后你也可以手动要求它发送消息。常见的使用场景包括传递发现结果当一个会话发现了重大更改或做出决策时Claude会为受影响区域的会话总结这些信息而无需你再次解释。协调并行工作树当多个会话在不同的[工作树](/docs/en/worktrees)中处理同一仓库时Claude可以告知其他会话有哪些更新。获取长时间运行任务的状态让迁移或测试任务将会结果报告给你正在关注的会话或者你也可以主动询问。跨机器回复回复来自其他机器或网页上的会话的消息。跨机器时Claude只能进行回复不能发起对话。跨会话消息传递适用于你自己启动和控制的独立会话。Claude Code针对其他运行或访问多个会话的方式都有专门的功能因此请根据具体需求选择合适的功能若要在另一个终端继续同一个对话或与新会话共享其上下文请使用[恢复会话](/docs/en/sessions#resume-a-session)功能。若要使用Claude创建和管理的协调会话团队请使用[代理团队](/docs/en/agent-teams)功能。若要从一个地方监控和控制多个会话请使用[代理视图](/docs/en/agent-view)功能。若要通过手机或其他设备亲自控制会话而不是让会话之间相互发送消息请使用[远程控制](/docs/en/remote-control)功能。若要将外部事件如CI结果或聊天消息推送到会话中请使用[通道](/docs/en/channels)功能。向其他会话发送消息当你的某个会话获得了其他会话所需的信息如发现结果、状态或决策时Claude会自动传递这些信息无需你在终端之间复制粘贴。Claude使用ListAgents发现目标会话并使用SendMessage发送消息你无需手动调用这些工具。Claude可以自行决定是否发送消息你也可以手动提示它发送。若要手动提示只需告诉Claude你希望其他会话了解或执行的内容。以下是一个手动提示的示例而非Claude发送的消息询问我另一个终端中运行的会话迁移是否完成Claude会自行编写实际的消息内容因此你的提示可以不指定具体措辞。以下示例提示Claude进行总结但不规定其表述方式Claude发送的内容会有所不同向处理支付API的会话解释我们刚刚做了什么关于Claude编写的消息到达时的样子包括示例请参阅“消息的外观”部分。消息传递接收消息的Claude会在活动回合的工具调用之间读取消息因此不会中断正在运行的工具。当接收会话处于空闲状态时Claude Code会以该消息开启一个新回合。在两个默认设置的普通交互式会话之间Claude Code会确保消息传递。但在某些配置下消息传递并不能得到保证。接收会话会根据自身的入站控制规则检查每条传入的消息检查结果可能有以下三种已传递Claude Code将消息传递给接收方的Claude。暂存Claude Code将消息暂存不进行传递。只有在你批准或后续模式或设置更改允许时暂存的消息才会传递给Claude。拒绝Claude Code直接丢弃该消息不进行传递。消息传递成功后会像你手动输入的提示词一样计入[使用量](/docs/en/costs)。接收方的Claude可以像平常一样回复发送方但跨机器的单向消息除外。权限边界以会话为单位。Claude不会要求其他会话执行在自身会话中被拒绝或阻止的操作也不会执行自身权限设置所禁止的操作而是将这些工作返回给你处理。在接收方接收会话的权限提示和规则仍然适用于消息所请求的任何操作。查看Claude可访问的会话Claude会自动查找消息的目标会话因此在要求它发送消息之前你无需进行额外操作。若要查看Claude可访问的会话可运行/list-agents命令。该命令会列出每个会话及其对应的名称Claude会使用这些名称来发送消息。列出的会话包括子代理当前会话内运行的代理。[代理团队](/docs/en/agent-teams)成员不会列出Claude会通过团队自身的名册向他们发送消息。你在本地的其他会话在同一台机器上运行的Claude Code会话包括[后台会话](/docs/en/agent-view)。只有绑定了收件箱套接字的会话才会显示。其他机器上的会话在[远程控制](/docs/en/remote-control)连接时显示并标记为Remote Control。这些是你在其他机器上的会话以及[网页版Claude Code](/docs/en/claude-code-on-the-web)会话。Claude不能向这些会话发起对话只能回复来自它们的消息。具体请参阅“向其他机器上的会话发送消息”部分。会话的名称可以通过[/rename](/docs/en/commands)命令或[--name](/docs/en/cli-reference#cli-flags)标志进行设置。若未设置名称Claude Code会自动为会话命名。交互式会话的名称通常源自其工作目录的文件夹名称例如myapp-3f。两个会话可能会有相同的名称。/list-agents输出会显示每个本地会话的工作目录以便区分在不同目录中运行的同名会话。Claude自己的列表会为每行添加一个短标识符并在名称冲突时使用该标识符进行寻址。向其他机器上的会话发送消息目标会话的位置决定了消息的传递方式以及Claude可以发送的内容目标会话位置消息传递方式Claude可发送的内容同一台机器通过每个会话的套接字传递不经过Anthropic服务器新消息和回复你的其他机器通过Anthropic服务器通过该机器的[远程控制](/docs/en/remote-control)连接接收仅回复[网页版Claude Code](/docs/en/claude-code-on-the-web)通过Anthropic服务器直接发送到云端会话仅回复同一台机器上的消息传递在该功能启用的任何地方都可以正常工作。每个会话会在磁盘文件中注册自己并绑定其收件箱套接字。当Claude列出或向本地会话发送消息时Claude Code会读取这些文件以查找会话因此只有当两个会话可以访问相同的文件时它们才能相互通信。容器有自己的文件系统因此容器内的会话和主机上的会话无法相互通信。同一容器内的两个会话仍然可以相互发送消息包括在[自托管运行器](/docs/en/self-hosted-environments)上。回复消息需要一个回复地址几乎每条消息都会携带该地址。当回复其他机器上的会话时如果回复会话未连接到远程控制消息仍然会作为直接请求发送到Anthropic服务器但到达时没有回复地址因此接收方无法进行回复。Claude在发送时会收到相应提示。若要在任何消息发送到其他机器之前获得你的批准请设置isolatePeerMachines。会话如何处理传入消息当会话A向会话B发送消息时Claude Code会告知会话B的Claude该消息来自其他会话而非你本人并限制消息的操作权限不能批准操作来自其他会话的消息不能作为你的同意因此不能代表你回答待处理的权限提示。不能更改配置Claude Code会指示接收方的Claude不要因其他会话的请求而更改权限设置、CLAUDE.md或其他配置。命令不会执行消息文本中的命令如/compact会以纯文本形式接收Claude Code不会执行这些命令。权限提示仍然会触发如果执行消息中的请求需要接收方会话没有的权限你会看到与其他工作相同的权限提示。消息的外观消息到达时会在与发送者的对话中显示。如果Claude正在处理任务消息会排队等待如果会话处于空闲状态会立即开始新的回合。Claude读取消息后Claude Code会将其折叠为一行Message from行按CtrlO可展开。消息是Claude之间传递的一段文本。Claude会收到发送者的名称和回复地址但跨机器的单向回复消息没有回复地址。你可以看到发送者的名称和消息文本接收方会话只能获取文本内容不会收到发送者的对话历史或文件。以下是接收方会话看到的Claude发送的消息示例架构迁移已完成新列名为tenant_id现在基于主分支进行变基是安全的。控制传入消息通过设置[crossSessionInbound](/docs/en/settings#available-settings)可以选择会话如何处理来自其他会话的消息值行为acceptClaude Code将每条消息传递给ClaudeholdClaude Code会为每条消息显示通知但不进行传递。如果后续根据[优先级规则](/docs/en/settings#available-settings)应用了acceptClaude Code会释放暂存的消息refuseClaude Code直接丢弃每条消息不进行传递若要查看应用的具体值请遵循[设置参考](/docs/en/settings#available-settings)中的crossSessionInbound优先级规则。如果没有应用任何值Claude Code会根据两个会话的权限模式为每条消息做出决策。它会将会话分为两类一类是[绕过权限提示](/docs/en/permission-modes#skip-all-checks-with-bypasspermissions-mode)的会话另一类是其他会话。在具有绕过权限的会话中计划模式被视为绕过权限而 [auto](/docs/en/permission-modes#eliminate-prompts-with-auto-mode)、acceptEdits和dontAsk被视为需要提示接收方会话需要权限提示Claude Code会传递每条消息。只有当发送方会话标识为绕过权限提示时才会将消息暂存等待你的批准。接收方会话绕过权限提示Claude Code会将每条消息暂存等待你的批准。只有当发送方会话也标识为绕过权限时才会传递该消息。当默认设置暂存消息时Claude Code会在接收方会话中打开一个批准对话框。对话框会显示发送者和消息预览批准将该消息传递给Claude。拒绝或关闭对话框丢弃该消息。如果在[dialogExpiry](/docs/en/settings#available-settings)截止时间之前未做出响应对话框将关闭Claude Code会丢弃该消息。默认截止时间为5分钟。如果在消息暂存期间该会话的权限模式类别发生变化Claude Code会重新应用入站规则传递现在允许的消息并显示通知。如果更改导致refuse规则适用Claude Code会丢弃所有暂存的消息并向每个可联系的发送方报告拒绝情况。当发送方和接收方在同一台机器上时Claude Code会告知发送方会话消息的处理结果。消息暂存时会显示通知接收方后续传递、拒绝或消息过期时会报告最终结果。消息在到达时被拒绝发送方不会收到通知。Claude Code最多暂存100条消息超出后会丢弃最早的消息这与传递队列是分开处理的。非交互式会话Claude Code会像为交互式会话一样为[claude -p](/docs/en/headless)会话绑定收件箱套接字因此长时间运行的-p工作进程可以接收消息并会显示在列表中。当你以[裸模式](/docs/en/headless#start-faster-with-bare-mode)启动会话时Claude Code不会绑定套接字因此该会话无法接收消息也不会显示在代理列表中。-p会话无法显示批准对话框暂存的消息会一直暂存。只有在后续模式或设置更改允许时Claude Code才会根据上述相同规则传递消息。若要让-p工作进程自动接收消息可在其--settings值中设置crossSessionInbound为accept。在用户设置中设置accept也可以但会应用于你运行的所有会话。会话的收件箱套接字当你期望的会话未显示在代理列表中、希望脚本或钩子向会话发送消息或者沙盒命令无法访问套接字时可以阅读本节内容。Claude Code会为启用跨会话消息传递的每个会话绑定一个收件箱套接字同一机器上的其他会话可以通过该套接字发送消息。套接字仅限于你的操作系统用户访问因此在共享机器上其他用户的会话无法访问。有关哪些类型的会话会绑定套接字请参阅“非交互式会话”部分。你可以在以下两个位置找到套接字的路径/status会在Peer address行显示该路径路径前缀为uds:。Claude Code会将其作为[CLAUDE_CODE_MESSAGING_SOCKET](/docs/en/env-vars#variables)环境变量导出到[钩子](/docs/en/hooks)和Bash命令中。该导出操作会在任何钩子包括SessionStart运行之前进行。每个会话都会导出自己的套接字不会继承父会话的套接字。Claude Code会对通过套接字传入的消息执行与其他对等消息相同的入站控制规则但有一个例外和一个前提条件自身子进程消息当没有crossSessionInbound值适用时Claude Code会传递它验证来自会话自身子进程如钩子或Bash命令向自己会话的套接字发送的消息的消息。在Linux系统包括WSL 2内部中即使子进程已经退出它也能进行验证在macOS系统中只有在发送进程仍在运行时才能验证在Claude Code作为进程ID 1运行的容器中它无法进行验证。无法验证时它会将该消息视为未声明权限类别的普通消息因此绕过权限提示的会话会将其暂存等待你的批准。沙盒会话可以通过沙盒的Unix套接字设置[sandbox.network.allowAllUnixSockets和sandbox.network.allowUnixSockets](/docs/en/settings#sandbox-settings)控制Bash命令是否可以从[沙盒](/docs/en/sandboxing)内部访问套接字。限制跨会话消息传递除了每条消息的默认设置外你还可以通过两种方式进一步限制消息传递要求对所有跨机器消息进行审批或者为会话或组织关闭消息传递功能。要求对跨机器消息进行审批将[isolatePeerMachines](/docs/en/settings#available-settings)设置为true可以要求在任何SendMessage消息发送到其他机器的会话之前获得你的明确批准{ isolatePeerMachines: true}设置此选项后即使在跳过普通权限提示的bypassPermissions模式下Claude回复其他机器上的会话时Claude Code也会要求你进行批准。任何设置范围中的true都将生效因此已提交的项目文件可以开启此要求但不能关闭。同一机器上的会话之间发送消息不会触发此提示。关闭跨会话消息传递接收和发送消息是两个独立的控制项你可以根据需要关闭其中一个或两个。使用crossSessionInbound控制传入消息使用权限规则控制Claude在此处可以发送或列出的内容停止接收消息将crossSessionInbound设置为refuseClaude Code会直接丢弃传入的对等消息不进行传递。在项目或本地设置中refuse会覆盖其他所有来源的设置在用户设置中除非托管设置或--settings标志设置了其他值否则该设置将生效。停止发送和列出消息添加[权限拒绝规则](/docs/en/permissions#tool-specific-permission-rules)指定SendMessage和ListAgents。这两个工具都使用不带说明符的纯工具名称。管理员可以在[托管设置](/docs/en/permissions#managed-settings)中为组织关闭消息传递的两个方向将拒绝规则与refuse设置结合使用{ permissions: { deny: [SendMessage, ListAgents] }, crossSessionInbound: refuse}设置此配置后Claude Code仍然会为每个会话绑定收件箱套接字但会丢弃所有到达的消息不会将任何消息传递给Claude。拒绝SendMessage也会禁止向子代理和代理团队成员发送消息因为使用的是同一个工具。拒绝接收消息的会话在其自身的/status或其他会话的列表中不会有明显变化因此请从会话的配置中确认设置。可用性跨会话消息传递功能需要Claude Code v2.1.224或更高版本。该功能的可用性还取决于你的平台、提供商和配置操作系统支持macOS和Linux系统包括WSL 2中的Linux。Claude Code在原生Windows系统上不提供跨会话消息传递功能。提供商在Amazon Bedrock、AWS上的Claude Platform、Google Cloud的Agent Platform或Microsoft Foundry上不可用。功能标志评估当[CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC、DISABLE_TELEMETRY、DO_NOT_TRACK或DISABLE_GROWTHBOOK](/docs/en/env-vars#variables)中的任何一个关闭了该功能依赖的功能标志评估时跨会话消息传递功能将无法使用。每个变量的说明中会指出哪些值会导致此情况。请取消设置相应的变量。这些变量可以来自你的shell、设置文件的env映射或托管设置。若要检查某个会话是否支持跨会话消息传递可输入/list-agents命令该命令也可使用/peers。结果会区分不支持该功能的会话和因某些限制如缺少SendMessage工具或发送被拒绝而无法接收消息的会话/list-agents命令未被识别该会话不支持跨会话消息传递。请按照上述要求进行排查首先使用claude --version检查版本是否符合要求。/list-agents命令可用但消息未送达消息传递功能已开启但存在其他限制。权限拒绝规则可能会移除SendMessage和ListAgents工具接收方会话的入站控制可能会暂存或丢弃你发送的消息而其他机器上的会话仅支持回复消息。在支持消息传递的会话中/status也会显示Peer address行其中包含会话自身的收件箱地址。限制以下限制是消息传递通道本身的特性适用于该功能支持的所有环境。有关平台和提供商的限制请参阅“可用性”部分。仅支持纯文本Claude仅在会话之间发送纯文本消息。结构化的[代理团队](/docs/en/agent-teams)协议消息仅在团队内部使用。消息循环会受到限制Claude Code会对每个发送者的重复消息进行速率限制丢弃短时间内到达的相同重复消息并将会话等待Claude读取的接受消息上限设置为50条。因此两个会话之间的消息循环会自动停止。相关资源[子代理](/docs/en/sub-agents#resume-subagents)和[代理团队](/docs/en/agent-teams#messages-between-agents)单个会话或团队内的消息传递[后台代理](/docs/en/agent-view)调度和监控你可能发送消息的并行会话[远程控制](/docs/en/remote-control)连接跨机器消息传递所依赖的会话[设置](/docs/en/settings#available-settings)crossSessionInbound、isolatePeerMachines和dialogExpiry[权限模式](/docs/en/permission-modes)入站默认设置的两个类别的背后模式[工具参考](/docs/en/tools-reference)工具表中的ListAgents和SendMessage行[并行运行代理](/docs/en/agents)比较Claude Code运行多个代理的不同方式