Claude Code的跨工作階段訊息傳遞
自v2.1.224起,Mac或Linux機器上的每一個互動式Claude Code工作階段都會在啟動時綁定一個Unix socket,而您執行的任何其他工作階段都能往裡面投遞一則文字訊息;我這台機器上的socket位於/tmp/cc-socks/38590.sock,權限僅限擁有者存取。1 原生Windows改用具名管道(named pipe),依版本說明自v2.1.239起支援,另有一個延後綁定的例外情況,寫在「陷阱」一節。驅動這項功能的是兩個工具:ListAgents負責找出您有哪些工作階段可以連上,SendMessage則依名稱把訊息送到其中一個。2 不必啟用,也不必設定。只要兩個工作階段都在同一台機器上執行v2.1.224或更新版本(Windows為v2.1.239),它們就已經能夠對話。
Claude Code的工作階段透過本機Unix socket互傳訊息(Windows自v2.1.239起改用具名管道):ListAgents找出可連上的工作階段,SendMessage則依名稱把純文字送到它那裡。訊息是輸入,絕非授權。它無法核准提示、無法變更設定、也無法執行指令,而且不帶任何對話歷程或檔案。
TL;DR
Claude Code的工作階段現在可以互相傳訊:在同一台機器上透過本機socket傳送,完全不經過Anthropic的伺服器;跨機器時則透過Remote Control(推出時只能回覆;v2.1.225新增了依名稱主動發起對話的能力)。15 訊息只有純文字,絕不包含對話歷史、檔案或權限,而接收端把它當成輸入而非授權:它無法核准提示、無法變更設定、也無法執行指令。1 這項功能讓一群各自獨立的終端機更接近一個團隊,而最好的用途,就是那些過去得由您親手轉達的協調訊息:「遷移完成了」、「我把那個欄位改名了」、「main可以安全rebase了」。最尖銳的陷阱是無聲的缺席:四個彼此無關的隱私環境變數,各自都可能依其值悄悄停用這項功能。3 推出以來,Windows在v2.1.239獲得原生支援,v2.1.236則新增了notify_when_idle,讓一個工作階段可以請同一台機器上的另一個工作階段,在下次閒置或結束時發出一次通知。910
推出了什麼
v2.1.224版新增了跨工作階段的SendMessage,並以ListAgents在macOS與Linux上探索可連上的工作階段;v2.1.225進一步擴充,讓工作階段也能主動發起與您其他機器上Remote Control工作階段的對話,先前只能回覆。45
有三個介面能讓您看見底層的運作:
/list-agents(別名/peers)第一行印出工作階段自己的名稱(也就是其他工作階段用來連絡它的名稱,自v2.1.239起顯示),接著列出Claude能連上的每一個工作階段:目前工作階段內的子代理程式、此工作階段所屬agent team中在線的隊友(自v2.1.239起列出;在此之前,明明連得上的隊友看起來卻像不存在)、您的其他本機工作階段(包括背景工作階段),以及在Remote Control連線期間,您在其他機器上和Claude Code網頁版上的工作階段。19/status會顯示一列Peer address,內容是工作階段自己的收件匣socket,前綴為uds:。1CLAUDE_CODE_MESSAGING_SOCKET:收件匣一旦綁定完成(見「陷阱」一節的延後綁定說明),Claude Code就會把這個環境變數匯出給hook與Bash指令,其中存放工作階段自己的socket路徑。16 它為什麼重要,下文會再說明。
2026年8月25日,我用Claude Code 2.1.246在自己的機器上驗證:代理程式清單的開頭是這一行「This session is blakecrosley-com-76 [04e18a] — the name other sessions use to message it (it is not listed below; a message to it would be a message to yourself).」(大意:本工作階段是blakecrosley-com-76 [04e18a],這是其他工作階段用來傳訊給它的名稱;它不會列在下方,傳訊給它等於傳給自己),接著是11個對等工作階段,每一列形如「resumegeni-25 [10d770] · interactive · idle · started 21h ago」:名稱採「目錄名稱加兩個字元後綴」的形式,附上方括號內的簡短識別碼,狀態有idle、busy與shell,每列標示啟動至今的時間,另有一個獨立的Subagents區塊列出此工作階段自己的子代理程式。/tmp/cc-socks/下的socket檔案權限為srw-------,目錄本身則是drwx------:只有我這個使用者能讀寫,這就是共用機器上的安全邊界。1
工作階段以名稱回應。可用/rename或--name旗標指定;否則Claude Code會依工作目錄衍生一個名稱,例如my-app-3f。111 自v2.1.232起,當您啟動、恢復或重新命名一個互動式工作階段,而名稱與機器上另一個在線工作階段相同時,Claude Code會把名稱留給原本擁有它的工作階段,將您的這一個改為name-word-word形式的變體(類似auth-refactor-graceful-unicorn),並告知您。110 以下情況仍會出現名稱衝突:其中一個工作階段執行較舊版本、共用的名稱是Claude Code自動產生的,或是您以--name啟動背景或-p工作階段,而Claude Code在啟動時不會檢查這種名稱。11 清單一律顯示每個本機工作階段的工作目錄,同名的工作階段若在不同目錄執行,就能藉此區分;遇到共用名稱時,Claude還會在每一列加上簡短識別碼,並在定址時使用它。當Claude Code無法檢查您所有工作階段所在的每一個地方,例如帳戶的雲端或Remote Control工作階段清單超出了它讀取的有限分頁數量,Claude也會退回到同樣的簡短識別碼定址方式。1
推出後的變化(2026年8月)
推出後兩週內的五個版本,補上了本文原先指出的Windows缺口,收緊了命名與定址,並修補了四種本文當初未曾指出的無聲失敗模式:910
| 版本 | 變更 |
|---|---|
| v2.1.232 | 唯一名稱與@提及。 同一台機器上的互動式工作階段保持名稱唯一(發生衝突時,新來的工作階段會改為name-word-word形式的變體並通知您);在提示中輸入@即可依名稱提及另一個在線工作階段,Claude會直接以SendMessage連絡它;/config新增「Messages from your other sessions」(來自您其他工作階段的訊息)一列,將crossSessionInbound(accept、hold、refuse)寫入使用者設定,旁邊還有「Dialog expiry」(對話框逾時)一列。同一版本也強化了共用/tmp上自動產生的socket目錄:Claude Code現在會拒絕預先植入的符號連結或其他使用者的目錄,而不是直接使用。110 |
| v2.1.235 | SendMessage會在一開始就拒絕超過跨工作階段傳遞上限的訊息,而不是默默丟棄。10 |
| v2.1.236 | notify_when_idle:請同一台機器上的另一個工作階段,在下次閒置或結束時發出一次通知(雙方都須為v2.1.236以上)。需明確啟用、一次性、不輪詢。同一版本還會在短時間內的連發訊息即將超出接收端收件匣容量時,提前拒絕後續訊息,而不是回報已送出、實際上卻被接收端丟棄。110 |
| v2.1.238 | 誠實回報傳遞結果:傳訊給本機上拒收訊息的工作階段(crossSessionInbound: "refuse")時,現在會向傳送端回報「refused」(已拒絕),而不是假裝成功;若某個工作階段的收件匣丟棄了您的訊息(速率限制或佇列已滿),它會告知您的工作階段,而不是讓訊息憑空消失。10 |
| v2.1.239 | Windows。 跨工作階段訊息傳遞以原生方式運作,使用同樣的SendMessage與ListAgents工具;ListAgents現在會告訴工作階段自己的名稱(其他工作階段用來連絡它的名稱),並列出在線的隊友,先前這些隊友看起來像不存在;對自己的名稱使用SendMessage時,會明確指出這一點,而不是回覆「no agent named …」。9 |
實際效果是:下方「會回報的長時間任務」模式不再需要一則查問進度的提示。監看的工作階段用notify_when_idle向長時間任務要一次閒置通知,等它下次閒置或結束時就會收到回音。四種失敗模式中的兩種(訊息過大、連發太快超出收件匣容量)現在會在傳送端立即失敗;另外兩種(被拒絕或被丟棄的訊息)則會以明確的回報,回到同一台機器上的互動式傳送端。
信任模型才是精彩之處
Anthropic的設計回答了一個多數多代理程式系統都答不好的問題:來自另一個代理程式的訊息,價值究竟是什麼?這裡的答案很精確:訊息是資訊,絕非授權。1
當工作階段A傳訊給工作階段B時,四條規則約束著送達的內容:1
- 它無法核准任何事。 B中待處理的權限提示會忽略A說的一切。只有您能回答提示。
- 它無法變更設定。 Claude Code指示接收端的Claude,絕不因為另一個工作階段的要求而更動權限設定、
CLAUDE.md或任何設定。 - 指令以文字形式送達。 訊息內文裡的
/compact只是八個字元的文字,絕不會被當成指令執行。 - 權限提示照常出現。 如果依訊息行事需要B所欠缺的權限,您會看到和其他任何工作一樣的提示。
傳入的訊息還有自己的一道關卡。每一則送達的訊息會落入三種結果之一(已傳遞、暫留等待您核准,或被拒絕),由crossSessionInbound設定(accept、hold、refuse)控制。1 如果您什麼都沒設定,Claude Code會依兩個工作階段的權限模式逐則判定,而預設邏輯十分優雅:略過權限提示的工作階段自成一類,其餘的另成一類(當工作階段可使用略過權限時,plan模式算作略過;auto、acceptEdits與dontAsk算作會提示)。會提示的工作階段可自由接收訊息,但會暫留任何來自略過型工作階段的訊息;略過型工作階段則暫留所有訊息,只放行來自同為略過型工作階段的訊息。1 這種不對稱是刻意的:訊息不得搭上寬鬆工作階段的權限便車。這項原則由v2.1.222先在auto模式的傳出端落實,由權限分類器在派送前審查每一次傳送;v2.1.224再把它套用到傳入端。7
暫留的訊息會開啟一個核准對話框,顯示傳送者與預覽;未回應的對話框會在五分鐘後逾時(可透過dialogExpiry調整),訊息隨之丟棄。1 沒有連接終端機的背景工作階段會讓對話框超過期限仍保持開啟;等您連接上之後,只有在對話框又經過完整一段期限仍未回應時,訊息才會丟棄。1 同時暫留的訊息最多100則。1 另外兩項控制能進一步收窄範圍:isolatePeerMachines: true要求任何訊息離開本機前都必須經過您明確核准,即使在bypassPermissions模式下也一樣;而且只要任一設定範圍設為true就生效,因此已提交進版本庫的專案設定檔只能收緊,無法放寬。1 組織可以在受管理設定中對SendMessage與ListAgents加上拒絕規則,再搭配crossSessionInbound: "refuse",徹底關閉這項功能。1
訊息如何傳遞
另一個工作階段在哪裡執行,同時決定了傳輸方式與您能傳送的內容:1
| 目標 | 傳輸方式 | 可傳送的內容 |
|---|---|---|
| 同一台機器 | 每個工作階段各自的Unix socket(原生Windows為具名管道),絕不經過Anthropic伺服器 | 新訊息與回覆 |
| 您的另一台機器 | Anthropic伺服器,經由那台機器的Remote Control連線送達 | 回覆;自v2.1.225起,在Remote Control連線期間也可發起新對話5 |
| Claude Code網頁版 | Anthropic伺服器,直接送到雲端工作階段 | 回覆;在Remote Control連線期間,可對清單中出現的雲端工作階段發起新對話1 |
本文初次刊出時,Anthropic的文件頁面仍把所有跨機器訊息描述為只能回覆,而v2.1.225的版本說明卻寫著SendMessage「can now start a conversation with your Remote Control sessions on other machines by name.」(現在可以依名稱主動與您其他機器上的Remote Control工作階段發起對話)。文件如今已跟上:頁面現在指出,要與您另一台機器上的工作階段發起對話,需要v2.1.225或更新版本,而且目標必須出現在清單中。15
同一台機器的判定規則是檔案系統的可見性:工作階段把自己登錄在磁碟上的檔案裡,所以兩個工作階段只有在看得見相同檔案時才連得上彼此。容器內的工作階段和主機上的工作階段無法對話;同一個容器內的兩個工作階段則可以。1
傳遞會尊重接收端的節奏:在進行中的回合裡,接收端的Claude會在工具呼叫之間讀取訊息,絕不打斷正在執行的工具;工作階段閒置時,Claude Code則會以這則訊息開啟新的一個回合。1 送達的訊息會像您親自輸入的提示一樣計入用量。1
值得建立的五種模式
1. Worktree協調。 最顯而易見的一種,也是官方文件用自己的範例訊息說明的情境:在同一個儲存庫的不同worktree中工作的工作階段,互相告知什麼已經完成。1 「Schema migration finished: the new column is tenant_id, and rebasing on main is safe now.」(schema遷移完成:新欄位是tenant_id,現在可以安全地在main上rebase)這一類更新,否則就得靠您自己注意到、切換終端機、再重新輸入。如果幾個工作階段共用同一份檢出的工作目錄而不是各自的worktree,協調訊息的價值更高:「我要提交content/guides/了,別把它加入暫存區」能避免共用工作樹的經典衝突,也就是一個工作階段把另一個工作階段做到一半的東西一併提交。
2. 監看者與工作者。 執行一個監看部署、測試套件或日誌的監看工作階段,一旦出問題就立刻傳訊給負責修復的工作階段。接收端得到的是作為脈絡的發現,而不是命令;它仍在自己的權限之下決定該怎麼做。把監看者與背景工作階段和通知hook搭配起來,就有了一條只在該由人處理時才交到人手上的呈報鏈。
3. 會回報的長時間任務。 在一個工作階段啟動遷移或冗長的測試,然後讓它向您真正在看的那個工作階段回報。1 狀態不再困在一個您早已遺忘的終端機裡。反過來也行得通,從監看端主動詢問:「問問我另一個終端機裡的工作階段,遷移完成了沒」本身就是一則提示,探索、定址與措辭都由Claude自行處理。1 自v2.1.236起可以連問都不必問:讓監看的工作階段對長時間任務設定notify_when_idle,它就會在下次閒置或結束時回報一次,雙方都不需輪詢。110 兩個工作階段都須為v2.1.236以上,限制則遵循傳入控制。每筆訂閱都有12小時的上限:時限內若沒有通知送達,Claude Code會撤銷訂閱並告訴Claude停止等待。若被監看端設為refuse,該工作階段會直接丟棄請求,既不記錄也不回應,訂閱便在上限屆滿時逾時,得不到任何回應;若詢問端設為refuse,Claude Code根本不會訂閱。任一方設為hold時,通知會以降級形式送達:被監看端省略它的單行狀態,詢問端則只在您的對話記錄中顯示通知,而不交給Claude。1
4. 無人值守的工作者群。 無介面的claude -p工作階段同樣會綁定收件匣socket,所以長時間執行的-p工作者能接收訊息,也會出現在清單中。8 問題在於:-p工作階段無法顯示核准對話框,因此依預設被暫留的訊息會等到dialogExpiry期限屆滿(預設五分鐘;dialogExpiry接受60s、5m、10m或never),然後丟棄,並向能連絡上的傳送端回報逾時;只有在這段時間內變更模式或設定,才能讓訊息送達。1 工作階段結束時若仍有暫留的訊息,Claude Code會向每一個能連絡上的傳送端回報這些訊息已逾時。1 在v2.1.225之前完全沒有期限:暫留的訊息就那樣停著,沒有通知也不會逾時,而帶著暫留訊息結束的工作者也不會告訴傳送端任何事。1 要執行一個能在無人值守下接收訊息的工作者,啟動時在它的--settings值裡加上crossSessionInbound: "accept":這是針對單一工作者的授權,而不是寫進使用者設定、對您執行的每個工作階段都生效的accept。8 bare模式的工作階段會完全略過socket,始終無法連上。8
5. 指令碼化的收件匣。 低調卻強大的一種:由於Claude Code會把CLAUDE_CODE_MESSAGING_SOCKET匯出給hook與Bash指令,指令碼可以直接往工作階段自己的收件匣投遞訊息。6 Claude Code會驗證來自自身子程序的訊息:hook或指令回傳給它所屬的工作階段時,只要沒有明確的crossSessionInbound設定適用,就能直接送達,不必經過任何手續。1 由工作階段自己的提交觸發的git hook、它啟動的測試包裝程式、它執行的部署指令碼:凡是工作階段本身啟動的hook或Bash指令,都能把一行脈絡送回該工作階段。Claude Code必須確認投遞者是它自己的子程序;當它既無法以程序證據、也無法以token驗證時,就會把訊息視為不主張任何權限類別的訊息,因此略過型工作階段會將它暫留等待您核准,而不是直接送達。1 在原生Windows上,連線的第一行必須是帶有CLAUDE_CODE_MESSAGING_TOKEN的驗證行,否則Claude Code會不讀取內容就關閉連線;這個token也是Windows驗證自身子程序訊息的唯一方式。1 在Linux上,程序證據的檢查在投遞程序結束後仍然有效;在macOS上則只在它還在執行時有效。在macOS上程序結束之後,以及在Claude Code是PID 1的容器裡,Claude Code改為驗證子程序是否在驗證行中送出了工作階段匯出的CLAUDE_CODE_MESSAGING_TOKEN。1 沙箱中的指令需要放行這個socket:在macOS上,sandbox.network.allowUnixSockets列出可連線的socket路徑;在Linux與WSL 2上,seccomp篩選器無法檢查路徑,只有sandbox.network.allowAllUnixSockets: true才能開放;若未安裝這個選用的篩選器,沙箱本來就不會封鎖socket。112
它刻意不扮演的角色
這些限制都是設計決策,尊重它們能讓您免於做出錯誤的東西。
不是核准管道。 信任模型裡的一切都是為了防止一個工作階段授權另一個工作階段的行動。設計上明確排除任何形如「工作階段A核准、工作階段B執行」的工作流程。授權永遠要經過人。1
不是脈絡轉移。 訊息是一個Claude寫給另一個Claude的文字,絕非對話歷史或檔案。Anthropic的文件說得很直白:要搬移一段對話,請改用恢復工作階段。1 摘要即可,別整份倒過去。
不是agent teams。 各自獨立的工作階段互相傳訊,屬於點對點的情境。由Claude產生並監督的協調團隊(結構化的協定訊息、成員名冊、共享的任務狀態)是agent teams(代理程式團隊)功能,而結構化的團隊訊息刻意只留在團隊內部。1 如果您發現自己正在跨工作階段文字之上設計一套訊息協定,您需要的其實是agent teams。
不是聊天迴圈。 Claude Code會對每個傳送者的重複訊息施加速率限制,丟棄短時間內到達的相同重複訊息,並把每個工作階段未讀的已接受訊息上限設為50則,因此兩個工作階段之間的訊息迴圈會依設計自行耗盡。1 v2.1.236還會在短時間內的連發訊息即將超出接收端收件匣容量時提前拒絕後續訊息,而不是回報已送出、實際上卻被接收端丟棄。10 請建立請求與回應式的交換,而不是對話。
陷阱
隱私變數會悄悄停用它。 跨工作階段訊息傳遞依賴功能旗標的評估,而CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC、DISABLE_TELEMETRY、DO_NOT_TRACK或DISABLE_GROWTHBOOK任何一個都可能關閉這項評估,連帶悄無聲息地讓訊息傳遞失效。3 診斷方法是/list-agents:如果工作階段不認得這個指令,代表它根本沒有這項功能;如果指令能用但訊息始終送不到,那就是範圍較窄的問題:拒絕規則、接收端的傳入控制、目標不在清單中(Remote Control未連線,或該工作階段落在Claude Code讀取的有限分頁數量之外),或是v2.1.225之前的傳送端試圖發起跨機器對話。1 從未綁定收件匣的目標不屬於無聲的情況。位於隱私變數之後、處於bare模式或隔著容器邊界的工作階段,永遠不會出現在/list-agents裡,所以傳訊給它會以「Claude Code找不到這個名稱」的方式明確失敗;而且自v2.1.234起,當SendMessage無法完整檢查您的工作階段清單時也會明說,而不是把沒看到的工作階段當成不存在。1310 升級後的第一個工作階段是延後綁定,不是缺失:功能旗標抓取一完成,Claude Code就會綁定收件匣並匯出socket變數,而v2.1.228修正了第一個工作階段有時完全沒有收件匣的問題。110 真正無聲的情況出在傳送端。文件只對同一台機器上的互動式傳送端承諾暫留通知及其後續、送達時的拒絕通知與丟棄通知,所以跨機器的傳送端或-p工作者在這些情況下沒有任何保證會收到的通知。有兩種回報確實會送給「each sender it can reach」(每一個能連絡上的傳送端):依預設暫留的訊息逾時,以及設定變更導致暫留訊息被丟棄時的拒絕。由明確的hold設定暫留的訊息永遠不會逾時,因此也永遠不會有逾時回報。1
平台與供應商的缺口。 原生Windows在v2.1.239到來;在此之前只有WSL 2內的Linux可用。19 Anthropic的文件頁面把Windows的最低版本定在v2.1.234;版本說明則在v2.1.239才首次宣布。請把v2.1.239當作安全的最低版本。19 同一台電腦上,WSL 2內的工作階段與原生Windows工作階段彼此也連不上:它們登錄在不同的家目錄之下,監聽的socket類型也不同。1 Amazon Bedrock、Claude Platform on AWS、Google Cloud的Agent Platform與Microsoft Foundry均不提供這項功能。1
單向回覆的邊緣情況。 在回覆端未連上Remote Control時送出、給另一台機器上工作階段的回覆仍會送達,但不帶回覆位址,所以接收端無法回應。Claude Code在傳送時會把這一點告訴Claude,而v2.1.225收緊了定址:當Claude Code無法檢查自己的工作階段清單時,絕不會把已確認的跨機器收件者換成同名的本機工作階段。5
無介面的暫留。 那個莫名其妙不理會訊息的-p工作者,幾乎總是暫留訊息的問題:沒有對話框,就沒有送達。請為應該接收訊息的工作者設定crossSessionInbound: "accept"。8
重點整理
給日常使用Claude Code的使用者:
- 執行一次/list-agents,看看您的工作階段已經能連上哪些對象;用/rename為重要的工作階段命名,讓訊息定址乾淨俐落。Claude Code指南涵蓋了這項功能所倚賴的工作階段指令與設定。
- 用白話提示來傳訊(「告訴負責payments的工作階段我們改了什麼」),讓Claude自己撰寫訊息。1
給自動化建構者:
- 透過CLAUDE_CODE_MESSAGING_SOCKET從hook與指令碼投遞訊息到工作階段;在Linux上,自身子程序的訊息無需核准即可送達。16
- 為無人值守的-p工作者在它們各自的--settings中設定crossSessionInbound: "accept",而不是全域設定。8
給團隊與安全審查者:
- 這項功能的預設值是正確的:訊息不帶任何授權,預設會隔離略過型工作階段,而isolatePeerMachines加上受管理設定的拒絕規則,提供了單機與全組織層級的關閉開關。1
- 在斷定訊息傳遞壞掉之前,先檢查那四個隱私環境變數。拒收的工作階段在清單中和它自己的/status裡看起來一模一樣,所以要檢查套用到該工作階段的設定檔,而不是它的狀態;自v2.1.238起,來自同一台機器的傳送也會回報被拒絕的結果。110
常見問題
Claude Code的跨工作階段訊息傳遞能在Windows上運作嗎?
可以。根據發行說明,自v2.1.239起原生支援,工具同樣是SendMessage與ListAgents,只是以具名管道取代Unix socket。在那之前,只有WSL 2裡的Linux能用。Anthropic的文件頁面把Windows的下限標在v2.1.234;請把v2.1.239視為安全的下限。同一台電腦上的WSL 2工作階段與原生Windows工作階段,彼此仍然無法互通。19
一個Claude Code工作階段能否核准另一個工作階段的權限提示?
不能。訊息是資訊,絕非授權。待處理的權限提示會忽略傳送方工作階段所說的一切,因為只有您能回答提示。Claude Code明確要求接收端的Claude,絕不因為另一個工作階段開口就更動權限設定、CLAUDE.md或任何組態;而訊息內文裡的/compact不過是八個字元的文字,絕不會被當成指令執行。1
為什麼我的其他工作階段沒有出現在/list-agents裡?
先稽核那幾個隱私環境變數。訊息傳遞倚賴feature flag的評估,而CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC、DISABLE_TELEMETRY、DO_NOT_TRACK或DISABLE_GROWTHBOOK任何一個,都可能關閉該評估,並悄無聲息地把訊息傳遞一併帶走。處於bare模式或跨越容器邊界的工作階段同樣不會出現,因為兩個工作階段唯有看見磁碟上相同的檔案時才連得上彼此。13
我要如何讓無人值守的claude -p工作者收得到訊息?
啟動時在它的--settings值裡加上crossSessionInbound: "accept",這是逐一工作者的授予,而不是在使用者設定裡寫一個會套用到您所有工作階段的accept。-p工作階段會綁定收件匣socket並出現在清單中,但它無法顯示核准對話框,因此一則採預設保留的訊息會一路等到dialogExpiry期限,然後被丟棄。8
我可以把對話歷程或檔案傳給另一個工作階段嗎?
不行。訊息是一個Claude寫給另一個Claude的純文字,絕不包含對話歷程、檔案或權限。Anthropic的文件說得很直白:要搬移一段對話,請改為恢復該工作階段。請摘要,不要傾倒。而如果您發現自己正在跨工作階段的純文字之上設計一套訊息協定,那麼您真正想要的其實是agent teams。1
參考資料
-
Anthropic,“Message your other Claude Code sessions”,Claude Code文件。2026年8月8日存取;2026年8月25日重新核實。 ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩
-
Anthropic,“Tools reference”,Claude Code文件:
ListAgents與SendMessage條目。 ↩ -
Anthropic,“Environment variables”,Claude Code文件:關於
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC、DISABLE_TELEMETRY、DO_NOT_TRACK與DISABLE_GROWTHBOOK的功能旗標評估說明。 ↩↩↩↩ -
Anthropic,Claude Code v2.1.224版本說明,2026年8月7日(UTC):”Added cross-session
SendMessage: Claude Code sessions can now message each other, on any of your machines, withListAgentsto discover them (macOS and Linux).” ↩ -
Anthropic,Claude Code v2.1.225版本說明,2026年8月8日(UTC)發布:”SendMessage can now start a conversation with your Remote Control sessions on other machines by name (
ListAgentsshows them asname [ref]), instead of only replying after they message you first.” 同一版本指出,Claude Code在”when its own list couldn’t be checked.”(無法檢查自己的清單時)絕不會把已確認的Remote Control收件者換成本機上的同名工作階段。 ↩↩↩↩↩ -
Anthropic,“Environment variables”,Claude Code文件:
CLAUDE_CODE_MESSAGING_SOCKET,在socket綁定時匯出給hook與Bash指令;在啟動時即開啟訊息傳遞的工作階段中,會在任何hook執行前完成綁定;跨工作階段頁面補充”includingSessionStart“。 ↩↩↩ -
Anthropic,Claude Code v2.1.222版本說明,2026年8月4日:”Improved auto mode safety: messages sent to other agent sessions via
SendMessageare now evaluated by the permission classifier before dispatch.” 分類器審查適用於auto模式(以及auto分類器審查指令時的plan模式),並非一律適用。plan模式的條款出自Anthropic,“Permission modes”,Claude Code文件:”The classifier also reviews each message Claude sends to another agent withSendMessage, whether plain text or a structured agent team message, before Claude Code delivers it, both in auto mode and in plan mode while the classifier reviews commands; the send review requires Claude Code v2.1.222 or later.” ↩ -
Anthropic,“Message your other Claude Code sessions: Non-interactive sessions”,Claude Code文件:
-p工作階段會綁定收件匣socket並出現在清單中,那裡依預設暫留的訊息會等到dialogExpiry屆滿,而無人值守的送達需要在工作者自己的--settings中設定crossSessionInbound: "accept"。無介面模式頁面在“Headless mode”下說明bare模式。 ↩↩↩↩↩↩ -
Anthropic,Claude Code v2.1.239版本說明,2026年8月21日:”Windows: cross-session messaging is now available, so Claude Code sessions across your machines can message each other with
SendMessageand find each other withListAgents, as on macOS and Linux”;”ListAgentsnow tells a session its own name (the one peers use to message it), andSendMessageto your own name says so instead of "no agent named …"“;”ListAgentsand/list-agentsnow list your live teammates (previously only subagents and other sessions appeared, so a reachable teammate looked absent).” ↩↩↩↩↩↩↩ -
Anthropic,Claude Code版本說明v2.1.228(”Fixed cross-session messaging sometimes starting without an inbox in the first session after install or upgrade”)、v2.1.232(”Type
@in the prompt to mention another Claude session by name; Claude then usesSendMessageto reach that session directly”;”Interactive sessions on one machine now keep unique names: starting or renaming a session to a name another live session already uses gives it aname-word-wordvariant and tells you”;”Added/configrows for "Dialog expiry" and "Messages from your other sessions" (cross-session inbound accept/hold/refuse)”;”Hardened the auto-generated cross-session messaging socket directory on shared/tmp: a pre-planted symlink or another user’s directory is now refused instead of used”)、v2.1.234(”SendMessageandListAgentsnow say when your account’s session list was too long to check completely, instead of treating unseen sessions as absent”)、v2.1.235(”SendMessagenow refuses messages too large for cross-session delivery up front instead of silently dropping them”)、v2.1.236(”Addednotify_when_idleto cross-sessionSendMessage: ask another Claude Code session on this machine to send one notice when it next goes idle — opt-in, one-shot, no polling (macOS and Linux)”;”SendMessagenow refuses further messages to a session up front once a rapid burst would exceed what that session’s inbox accepts, instead of reporting them sent while they were dropped”),以及v2.1.238(回報拒收與收件匣丟棄的情況)。2026年8月25日對照正式的CHANGELOG.md核實。 ↩↩↩↩↩↩↩↩↩↩↩↩ -
Anthropic,“Sessions: Name your sessions”,Claude Code文件。”In three cases Claude Code doesn’t rename the duplicate”(有三種情況Claude Code不會重新命名重複者):它不檢查AI產生的標題或預設顯示名稱,不檢查”the
--nameof a background or-psession at startup”(背景或無介面工作階段啟動時指定的名稱),也無法重新命名執行較早版本Claude Code的工作階段。 ↩↩ -
Anthropic,“Settings reference:
sandbox.network.allowUnixSockets“,Claude Code文件:”List the Unix socket paths sandboxed commands can connect to on macOS. Claude Code ignores this list on Linux and WSL2, where the seccomp filter can’t inspect socket paths; useallowAllUnixSocketsthere instead.”allowAllUnixSockets條目補充,在Linux與WSL2上seccomp篩選器會封鎖socket(AF_UNIX, ...)呼叫,因此該鍵是那裡允許Unix socket的唯一途徑。 ↩