178 178
179當工作階段 A 傳訊息給工作階段 B 時,Claude Code 會告訴 B 的 Claude 該訊息來自另一個工作階段,而不是來自您,並限制訊息可以執行的操作:179當工作階段 A 傳訊息給工作階段 B 時,Claude Code 會告訴 B 的 Claude 該訊息來自另一個工作階段,而不是來自您,並限制訊息可以執行的操作:
180 180
181* **無法批准任何事項**:來自另一個工作階段的訊息永遠不會被視為您的同意,因此無法代表您回答待處理的權限提示。181* **無法核准任何事項**:來自另一個工作階段的訊息永遠不會被視為您的同意,因此無法代表您回答待處理的權限提示。
182* **無法變更設定**:Claude Code 指示接收端的 Claude 永遠不要變更權限設定、`CLAUDE.md` 或其他設定,因為另一個工作階段要求。182* **無法變更設定**:Claude Code 指示接收端的 Claude 永遠不要因為另一個工作階段的要求而變更權限設定、`CLAUDE.md` 或其他設定。
183* **命令不執行**:訊息文字中的命令(例如 `/compact`)會以純文字形式送達。Claude Code 永遠不會執行它。183* **命令不執行**:訊息文字中的命令(例如 `/compact`)會以純文字形式送達。Claude Code 永遠不會執行它。
184* **權限提示仍會觸發**:如果根據訊息採取行動需要接收工作階段沒有的權限,您會看到與任何其他工作相同的提示。184* **權限提示仍會觸發**:如果根據訊息採取行動需要接收工作階段沒有的權限,您會看到與任何其他工作相同的提示。
185 185
191 191
192以下任一方式都可以顯示完整文字:192以下任一方式都可以顯示完整文字:
193 193
194* 按 `Ctrl+O` 開啟[文字記錄檢視器](/docs/zh-TW/interactive-mode#transcript-viewer),並在寄件者的工作階段名稱下閱讀完整文字。194* 按 `Ctrl+O` 開啟[逐字稿檢視器](/docs/zh-TW/interactive-mode#transcript-viewer),並在寄件者的工作階段名稱下閱讀完整文字。
195* 在以 [`--verbose`](/docs/zh-TW/cli-reference#cli-flags) 啟動的工作階段中,Claude Code 會顯示完整文字而不是預覽。195* 在以 [`--verbose`](/docs/zh-TW/cli-reference#cli-flags) 啟動的工作階段中,Claude Code 會顯示完整文字而不是預覽。
196 196
197預覽只會縮短您看到的內容。無論您是否展開它,Claude 都會讀取完整訊息。197預覽只會縮短您看到的內容。無論您是否展開它,Claude 都會讀取完整訊息。
217| `hold` | Claude Code 為每條訊息顯示通知,不傳遞它。如果稍後應用 `accept`,根據[優先順序規則](/docs/zh-TW/settings-reference#crosssessioninbound),Claude Code 會釋放保留的訊息 |217| `hold` | Claude Code 為每條訊息顯示通知,不傳遞它。如果稍後應用 `accept`,根據[優先順序規則](/docs/zh-TW/settings-reference#crosssessioninbound),Claude Code 會釋放保留的訊息 |
218| `refuse` | Claude Code 丟棄每條訊息,不傳遞它 |218| `refuse` | Claude Code 丟棄每條訊息,不傳遞它 |
219 219
220除了編輯設定檔外,您可以在 `/config` 列中選擇**來自您其他工作階段的訊息**的值。Claude Code 會將您選擇的值寫入您的使用者設定。該列需要 Claude Code v2.1.232 或更新版本,當受管設定或 `--settings` 旗標設定金鑰時不會出現,因為使用者設定值在那時不適用。Claude Code 拒絕此金鑰的 `/config crossSessionInbound=value` 簡寫。220除了編輯設定檔外,您可以在 `/config` 列中選擇**來自您其他工作階段的訊息**的值。Claude Code 會將您選擇的值寫入您的使用者設定。該列需要 Claude Code v2.1.232 或更新版本,當受管設定或 `--settings` 旗標設定此設定鍵時不會出現,因為使用者設定值在那時不適用。Claude Code 拒絕此設定鍵的 `/config crossSessionInbound=value` 簡寫。
221 221
222若要查看適用的值,請遵循[設定參考](/docs/zh-TW/settings-reference#crosssessioninbound)中的 `crossSessionInbound` 優先順序規則。當沒有值適用時,Claude Code 會根據兩個工作階段的權限模式決定每條訊息。它將[略過權限提示](/docs/zh-TW/permission-modes#skip-all-checks-with-bypasspermissions-mode)的工作階段分組為一個類別,將所有其他工作階段分組為另一個類別。Plan Mode 在具有可用的略過權限的工作階段中計為略過,[auto](/docs/zh-TW/permission-modes#eliminate-prompts-with-auto-mode)、`acceptEdits` 和 `dontAsk` 計為提示:222若要查看適用的值,請遵循[設定參考](/docs/zh-TW/settings-reference#crosssessioninbound)中的 `crossSessionInbound` 優先順序規則。
223 223
224* **接收工作階段提示權限**:Claude Code 傳遞每條訊息。只有當傳送工作階段識別自己為略過權限提示時,它才會保留一條訊息以供您批准。224當沒有值適用時,Claude Code 會根據兩個工作階段的權限模式決定每條訊息。它將[略過權限提示](/docs/zh-TW/permission-modes#skip-all-checks-with-bypasspermissions-mode)的工作階段分組為一個類別,將所有其他工作階段分組為另一個類別。plan mode 在具有可用略過權限的互動式終端機工作階段中計為略過,[auto](/docs/zh-TW/permission-modes#eliminate-prompts-with-auto-mode)、`acceptEdits` 和 `dontAsk` 計為提示:
225* **接收工作階段略過權限提示**:Claude Code 保留每條訊息以供您批准。只有當傳送工作階段識別自己也略過時,它才會傳遞一條訊息。
226 225
227當預設保留訊息時,Claude Code 會在接收工作階段中開啟批准對話框。對話框顯示寄件者和預覽:226* **接收工作階段提示權限**:Claude Code 傳遞每條訊息。只有當傳送工作階段識別自己為略過權限提示時,它才會保留一條訊息以供您核准。
227* **接收工作階段略過權限提示**:Claude Code 保留每條訊息以供您核准。只有當傳送工作階段識別自己也略過時,它才會傳遞一條訊息。
228 228
229* **批准**會將該訊息傳遞給 Claude。229當預設在互動式終端機工作階段中保留訊息時,Claude Code 會在該處開啟核准對話框。對話框顯示寄件者和預覽:
230* **拒絕**或關閉對話框會丟棄它。230
231* **Approve** 會將該訊息傳遞給 Claude。
232* **Deny** 或關閉對話框會丟棄它。
231* 當對話框在 [`dialogExpiry`](/docs/zh-TW/settings-reference#dialogexpiry) 截止時間後仍未回答時,Claude Code 會關閉它並丟棄訊息。截止時間預設為五分鐘。233* 當對話框在 [`dialogExpiry`](/docs/zh-TW/settings-reference#dialogexpiry) 截止時間後仍未回答時,Claude Code 會關閉它並丟棄訊息。截止時間預設為五分鐘。
232* 當沒有終端連接到[背景工作階段](/docs/zh-TW/agent-view)時,Claude Code 會將對話框保持在截止時間之後。連接後,如果對話框在完整截止時間內仍未回答,Claude Code 會關閉它並丟棄訊息。234* 當沒有終端機連接到[背景工作階段](/docs/zh-TW/agent-view)時,Claude Code 會將對話框保持在截止時間之後。連接後,如果對話框在完整截止時間內仍未回答,Claude Code 會關閉它並丟棄訊息。
233* 如果此工作階段的權限模式類別在保留訊息時變更,Claude Code 會重新應用傳入規則,傳遞它們現在接受的訊息,並顯示通知。235* 如果此工作階段的權限模式類別在保留訊息時變更,Claude Code 會重新應用傳入規則,傳遞它們現在接受的訊息,並顯示通知。
234 236
237VS Code 擴充功能或 Desktop 應用程式中的工作階段無法顯示該對話框。Claude Code 會在該處保留訊息直到相同的截止時間,如[非互動式工作階段](#non-interactive-sessions)所述。
238
235Claude Code 最多保留 100 條訊息,超過該數量會丟棄最舊的訊息。239Claude Code 最多保留 100 條訊息,超過該數量會丟棄最舊的訊息。
236 240
237<h3 id="non-interactive-sessions">241<h3 id="non-interactive-sessions">
238 非互動式工作階段242 非互動式工作階段
239</h3>243</h3>
240 244
241Claude Code 為 [`claude -p`](/docs/zh-TW/headless) 工作階段綁定收件匣套接字,就像互動式工作階段一樣,因此長時間執行的 `-p` 背景工作程式可以接收訊息並出現在列表中。當您以[裸機模式](/docs/zh-TW/headless#start-faster-with-bare-mode)啟動工作階段時,Claude Code 不會綁定套接字,因此該工作階段無法接收訊息,也不會出現在代理列表中。245Claude Code 為 [`claude -p`](/docs/zh-TW/headless) 工作階段綁定收件匣套接字,就像互動式工作階段一樣,因此長時間執行的 `-p` 背景工作程式可以接收訊息並出現在列表中。當您以 [bare 模式](/docs/zh-TW/headless#start-faster-with-bare-mode)啟動工作階段時,Claude Code 不會綁定套接字,因此該工作階段無法接收訊息,也不會出現在 agent 列表中。
242 246
243`-p` 工作階段無法顯示批准對話框。當[傳入預設](#control-inbound-messages)在那裡保留訊息時,Claude Code 會為其保留相同的 [`dialogExpiry`](/docs/zh-TW/settings-reference#dialogexpiry) 截止時間,預設為五分鐘:247`-p` 工作階段無法顯示核准對話框。當[傳入預設](#control-inbound-messages)在那裡保留訊息時,Claude Code 會為其保留相同的 [`dialogExpiry`](/docs/zh-TW/settings-reference#dialogexpiry) 截止時間,預設為五分鐘:
244 248
245* **在截止時間之前**:如果模式或設定變更允許訊息,Claude Code 會傳遞它。249* **在截止時間之前**:如果模式或設定變更允許訊息,Claude Code 會傳遞它。
246* **在截止時間之後**:Claude Code 會丟棄訊息,並向它可以到達的寄件者報告為已過期。250* **在截止時間之後**:Claude Code 會丟棄訊息,並向它可以到達的寄件者報告為已過期。
253 工作階段的收件匣套接字257 工作階段的收件匣套接字
254</h3>258</h3>
255 259
256當您預期的工作階段不在代理列表中、當您想要指令碼或 hook 發佈到工作階段中,或當沙箱化命令無法到達套接字時,請閱讀本節。260當您預期的工作階段不在 agent 列表中、當您想要指令碼或 hook 發佈到工作階段中,或當沙箱化命令無法到達套接字時,請閱讀本節。
257 261
258Claude Code 為啟用跨工作階段訊息的每個工作階段綁定收件匣套接字,其中機器上的其他工作階段傳遞訊息。套接字是 macOS 和 Linux 上的 Unix 網域套接字(包括 WSL 2 內的 Linux),以及原生 Windows 上的具名管道。有關哪些工作階段類型綁定一個,請參閱[非互動式工作階段](#non-interactive-sessions)。262Claude Code 為啟用跨工作階段訊息的每個工作階段綁定收件匣套接字,機器上的其他工作階段會透過它傳遞訊息。套接字是 macOS 和 Linux 上的 Unix 網域套接字(包括 WSL 2 內的 Linux),以及原生 Windows 上的具名管道。有關哪些工作階段類型綁定一個,請參閱[非互動式工作階段](#non-interactive-sessions)。
259 263
260您可以在兩個位置找到套接字的路徑:264您可以在兩個位置找到套接字的路徑:
261 265
262* `/status` 在 `Peer address` 列中顯示它。路徑前綴為 `uds:`。266* `/status` 在 `Peer address` 列中顯示它。路徑前綴為 `uds:`。
263* Claude Code 將其匯出到[hooks](/docs/zh-TW/hooks) 和 Bash 命令作為 [`CLAUDE_CODE_MESSAGING_SOCKET`](/docs/zh-TW/env-vars#variables) 環境變數:267* Claude Code 將其匯出到 [hooks](/docs/zh-TW/hooks) 和 Bash 命令作為 [`CLAUDE_CODE_MESSAGING_SOCKET`](/docs/zh-TW/env-vars#variables) 環境變數:
264 * 在以訊息開啟啟動的工作階段中,Claude Code 在任何 hook 執行前匯出變數,包括 `SessionStart`。268 * 在以訊息開啟啟動的工作階段中,Claude Code 在任何 hook 執行前匯出變數,包括 `SessionStart`。
265 269
266在 macOS 和 Linux 上,Claude Code 將套接字限制為您的作業系統使用者。在原生 Windows 上,它改為要求每個連線首先使用只有您的作業系統使用者可以讀取的金鑰進行驗證。無論哪種方式,在共享機器上,另一個使用者的工作階段無法傳遞到它。270在 macOS 和 Linux 上,Claude Code 將套接字限制為您的作業系統使用者。在原生 Windows 上,它改為要求每個連線首先使用只有您的作業系統使用者可以讀取的金鑰進行驗證。無論哪種方式,在共享機器上,另一個使用者的工作階段無法傳遞到它。
267 271
268在 macOS 和 Linux 上,Claude Code 也拒絕在無法接受的目錄中建立套接字,例如另一個使用者擁有的目錄,並改為使用私人的每使用者目錄 `/tmp/cc-socks-<uid>`。當它無法接受任何目錄時,工作階段會在沒有收件匣的情況下執行:Claude Code 會顯示通知,`/status` 在其 `Peer address` 列中顯示 `unavailable` 和原因,[`--debug`](/docs/zh-TW/cli-reference#cli-flags) 日誌會記錄完整拒絕。272在 macOS 和 Linux 上,Claude Code 也拒絕在無法接受的目錄中建立套接字,例如另一個使用者擁有的目錄,並改為使用私人的每使用者目錄 `/tmp/cc-socks-<uid>`。當它無法接受任何目錄時,工作階段會在沒有收件匣的情況下執行:Claude Code 會顯示通知,`/status` 在其 `Peer address` 列中顯示 `unavailable` 和原因,[`--debug`](/docs/zh-TW/cli-reference#cli-flags) 日誌會記錄完整拒絕。
269 273
270除了套接字的路徑外,Claude Code 還會匯出每個工作階段的權杖作為 [`CLAUDE_CODE_MESSAGING_TOKEN`](/docs/zh-TW/env-vars#variables)。發佈到其自己工作階段套接字的指令碼可以發送 `{"type":"auth","token":"<token>"}` 作為其連線的第一行,其中 `<token>` 是 `CLAUDE_CODE_MESSAGING_TOKEN` 的值。Claude Code 是否需要該行取決於平台:274除了套接字的路徑外,Claude Code 還會匯出每個工作階段的 token 作為 [`CLAUDE_CODE_MESSAGING_TOKEN`](/docs/zh-TW/env-vars#variables)。發佈到其自己工作階段套接字的指令碼可以發送 `{"type":"auth","token":"<token>"}` 作為其連線的第一行,其中 `<token>` 是 `CLAUDE_CODE_MESSAGING_TOKEN` 的值。Claude Code 是否需要該行取決於平台:
271 275
272* **macOS 和 Linux,包括 WSL 2**:該行是選擇性的。Claude Code 接受有或沒有它的連線。276* **macOS 和 Linux,包括 WSL 2**:該行是選擇性的。Claude Code 接受有或沒有它的連線。
273* **原生 Windows**:該行是必需的。Claude Code 會關閉任何第一行不是有效驗證行的連線,並且不會從該連線傳遞任何內容。277* **原生 Windows**:該行是必需的。Claude Code 會關閉任何第一行不是有效驗證行的連線,並且不會從該連線傳遞任何內容。
274 278
275只有在您要發佈的訊息準備好時才開啟連線。Claude Code 會關閉在 30 秒內未發送完整行的連線,因此請先擷取緩慢命令的輸出,然後開啟連線以發送它。279只有在您要發佈的訊息準備好時才開啟連線。Claude Code 會關閉在 30 秒內未發送完整行的連線,因此請先擷取緩慢命令的輸出,然後開啟連線以發送它。
276 280
277<span id="own-child-messages" />Claude Code 會透過與任何其他對等訊息相同的[傳入控制](#control-inbound-messages)執行到達套接字的訊息,但有一個例外和一個先決條件:281<span id="own-child-messages" />Claude Code 會透過與任何其他對等訊息相同的[傳入控制](#control-inbound-messages)處理到達套接字的訊息,但有一個例外和一個先決條件:
278 282
279* **自有子訊息**:當沒有 `crossSessionInbound` 值適用時,Claude Code 會傳遞它驗證來自工作階段自己的子程序的訊息,例如 hook 或 Bash 命令發佈回其自己工作階段的套接字。283* **自有子訊息**:當沒有 `crossSessionInbound` 值適用時,Claude Code 會傳遞它驗證來自工作階段自己的子程序的訊息,例如 hook 或 Bash 命令發佈回其自己工作階段的套接字。
280 * 在 Linux 上(包括 WSL 2 內),Claude Code 即使對於已經退出的子程序也可以透過程序證據進行驗證。在 macOS 上,它只能在發佈程序仍在執行時以這種方式驗證,在 Claude Code 作為程序 ID 1 執行的容器中,它根本沒有程序證據。在原生 Windows 上也沒有。284 * 在 Linux 上(包括 WSL 2 內),Claude Code 即使對於已經退出的子程序也可以透過程序證據進行驗證。在 macOS 上,它只能在發佈程序仍在執行時以這種方式驗證,在 Claude Code 作為程序 ID 1 執行的容器中,它根本沒有程序證據。在原生 Windows 上也沒有。
281 * 在 macOS 上發佈程序已退出後,以及在 Claude Code 作為程序 ID 1 執行的容器中,該程序證據遺失,Claude Code 改為驗證在開啟其連線的驗證行中發送工作階段匯出的 [`CLAUDE_CODE_MESSAGING_TOKEN`](/docs/zh-TW/env-vars#variables) 的子程序。在原生 Windows 上,該權杖是 Claude Code 驗證自有子訊息的唯一方式。285 * 在 macOS 上發佈程序已退出後,以及在 Claude Code 作為程序 ID 1 執行的容器中,該程序證據遺失,Claude Code 改為驗證在開啟其連線的驗證行中發送工作階段匯出的 [`CLAUDE_CODE_MESSAGING_TOKEN`](/docs/zh-TW/env-vars#variables) 的子程序。在原生 Windows 上,該 token 是 Claude Code 驗證自有子訊息的唯一方式。
282 * 當 Claude Code 無法以任何方式驗證時,它會將訊息視為任何其他不聲稱權限類別的訊息,因此略過權限提示的工作階段會為您的批准保留它。286 * 當 Claude Code 無法以任何方式驗證時,它會將訊息視為任何其他不聲稱權限類別的訊息,因此略過權限提示的工作階段會保留它以供您核准。
283* **沙箱化工作階段**:使用沙箱的 Unix 套接字設定 [`sandbox.network.allowAllUnixSockets` 和 `sandbox.network.allowUnixSockets`](/docs/zh-TW/settings-reference#sandbox-settings) 控制 Bash 命令是否可以從[沙箱](/docs/zh-TW/sandboxing)內到達套接字。287* **沙箱化工作階段**:使用沙箱的 Unix 套接字設定 [`sandbox.network.allowAllUnixSockets` 和 `sandbox.network.allowUnixSockets`](/docs/zh-TW/settings-reference#sandbox-settings) 控制 Bash 命令是否可以從[沙箱](/docs/zh-TW/sandboxing)內到達套接字。
284 288
285<h2 id="restrict-cross-session-messaging">289<h2 id="restrict-cross-session-messaging">