文章

Claude Code 是在本機跑還是在雲端跑?哪些東西會離開你的機器,帳號被盜又拿得到什麼

Claude Code 跑在你自己的終端機裡,Clawdline 讓它留在原地,再讓手機看得到。中繼實際搬了什麼、我們這邊看得到哪些欄位,以及金鑰只在你手上要付出什麼代價。

假設你下午出門前,讓 Claude Code 在自己的電腦上跑一個大重構。搭捷運的時候你想知道:它跑完了沒?還是早就停下來在等你回一句話?

Claude Code 本身沒有這個問題。它跑在你的終端機裡,用你的 shell、你的檔案、你自己的助理帳號,工作沒有哪一段放在別人的主機上。問題出在你想用手機看它的時候:手機得連到那台電腦,中間一定要有東西幫忙接線。

那個東西能看到什麼,決定了你的登入被偷之後,對方能拿到什麼。我們的答案是:手機看得到,中間的伺服器讀不到。下面一段一段講這句話怎麼成立,以及它要你付出什麼。各家遠端工具的逐條比較不在這篇,另一篇已經對照過各家文件。

直接交給雲端跑,不是比較省事嗎?

確實比較省事。代管的 agent 在你闔上筆電後還會繼續工作,不用配對,手機掉進河裡也不影響它。

但這些方便都來自同一個決定:你的儲存庫簽出在一台不歸你管的機器上,prompt 和回答經過一個能把它們顯示出來的服務。服務要在畫面上畫出你的對話記錄,手上就一定得有這些文字。所以判斷一個工具時,可以跟著一則 prompt 從你的鍵盤走到它出現的螢幕,沿路標出它以明文存在的每一站。密碼重設在這類服務上之所以有用,正是因為除了你之外,還有別人碰得到這些資料。

如果你要的就是一台凌晨三點還醒著、替你繼續做事的機器,那就去用那種服務,這是合理的選擇。

Clawdline 的做法:工作留在你的機器,Cloud 只負責接線

Clawdline 選了另一邊。這裡沒有雲端主機可以把工作搬過去跑:session 跑在你的 shell、你的機器、你自己的助理帳號底下。Cloud 指南用一句話講完:Cloud 裡什麼都不跑。選用的 Cloud 只負責讓手機連到那台已經在工作的機器,主控台上看到的也都是你自己開的 session。

限制也來自同一個設計。機器睡著,就沒有東西可以連。你從手機送給一台沒連線機器的指令,會當場失敗並告訴你,不會排進佇列等它醒來再執行。

從你的機器到手機,中間那段看得到什麼?

工作在本機跑,不代表就安心了。如果你打的每個字都要以可讀的形式經過別人的伺服器才回到手機上,「在本機執行」也沒什麼意義。所以 Clawdline 在內容離開機器之前就把它加密封好,中繼從頭到尾只經手外面的信封。

明文

你的機器

Claude Code 和 Codex 在這裡跑,用你自己的 shell 和帳號。prompt、回答和程式碼以明文存在,而且只存在這裡。

只有密文

中繼

負責搬信封。它知道信封走哪一條通道、什麼時候送、有多少位元組,但手上沒有任何一把能打開信封的金鑰,自己也湊不出來。

明文

你的手機

它解得開,是因為手上有金鑰。這把金鑰是另一台已經有金鑰的裝置批准配對時交給它的。

明文只在兩端,中間沒有。整篇要講的就是這件事:有人冒充你登入,拿到的是中間那一段,而中間那一段裡什麼都讀不出來。

打開信封的金鑰在你的第一台機器上產生,我們從頭到尾看不到。第二台裝置要拿到它,得用一台已經有金鑰的裝置掃配對碼。我們也不在伺服器上留備份,因為「連我們都讀不到」和「我們留了一份以防萬一」不可能同時成立。這份約定完整寫在加密文件裡。

完整的欄位清單在安全性頁面,要拿去和協定對照就看那一份。這裡先整理成一張表:

在哪裡 我們這邊看得到什麼
每一個信封上 版本、通道、序號、時間戳、類別、金鑰世代、nonce、送出的裝置、簽章,以及裡面有一段密文、密文有多少位元組
連線本身 機器或瀏覽裝置什麼時候連上,進出各搬了多少資料
控制平面(在任何信封出現之前就有) 你的帳號與訂閱狀態;機器的名稱、平台與最後上線時間;你的裝置和它們的權限與公鑰;還有我們用來計費與限流的用量數字
永遠看不到 密文裡的一切:prompt、回答、對話記錄、你的程式碼與檔案路徑、交接文件與附件、排程定義與任務指示,以及任務宣告了哪些寫入範圍

很多人談資料外洩只看網路上流過什麼,最常漏掉的就是第三列。你得先有帳號,才會有任何信封,所以清單只寫到網路為止,並不完整。

我的登入被偷了,對方能做什麼?

對方可以在你的帳號上加一個瀏覽裝置(Viewer),但沒辦法讓它解開任何一個 session。內容金鑰只會透過剛才那個配對批准送過去,我們的伺服器自己也湊不出一把。所以這件事不靠我們守承諾,金鑰本來就不在我們手上。

指令也走同一條路。從瀏覽裝置送出的每一個指令,都由那台裝置用自己的金鑰簽章,你的機器再拿本機的配對清單核對。帳號被盜,不等於對方能在你的機器上下指令。

另外兩道防線在你自己的機器上。本機服務只綁定 127.0.0.1,所以就算你連著咖啡廳的 Wi-Fi,同一個網路上的人也找不到它。「看得到 session」和「能打字進 session」是兩個分開的開關,剛裝好時兩個都是關的。

這樣做要付出什麼?

最大的代價是復原,剛好是前面那個「密碼重設」的反面。伺服器上沒有東西解得開你的內容,也就沒有東西救得回來,客服再有心也幫不上忙。我們的答案是一組你自己保管的復原碼。不過安全性頁面把復原碼、裝置清單和加密歷史保險庫都列為「正在建置」,現在還沒有。

第二個代價是配對。換新手機那天,你得多做一件事。

撤銷裝置也有它的極限。你按下撤銷之後,路由會在下一次權限更新時停掉,通常在一分鐘內;如果我們的控制平面連不上,最長要等到 24 小時。而那台裝置撤銷之前已經拿到金鑰,它在撤銷前收到的內容,仍然解得開。

最後,中繼資料是真的存在。中繼知道你什麼時候連線,也大概知道你送了多少。如果有人說自己的系統完全不洩漏中繼資料,那樣的系統根本沒辦法把封包送到目的地。

挑任何遠端工具之前,先問一句:裝置全丟了會怎樣?

這個問題對你手上的每一個工具都適用,包括我們。如果客服救得回你的歷史,就代表除了你以外,還有人讀得到它。另一個比較小的問題,適用於任何把 session 送上手機的工具:它能不能只讓你看,不讓你打字進去?

本機常駐服務和網頁主控台是開源、免費的,單獨就能完整使用,很多人從來不開 Cloud。Cloud 帳號啟用還在預覽階段,這個網站上目前沒有任何東西可以買,價格頁寫得很清楚;Cloud 指南也把「今天已經有的」和「還在建置的」分開列。想先試本機那一半,就安裝 Clawdline,Cloud 先不要開。

回到捷運上的那一刻:你打開手機,看到那個重構的 session 停在等你回話。這段時間裡,中繼經手的只有信封、連線時間和位元組數。你在手機上讀到的那些字,只在你的電腦和你的手機上以明文存在,中間沒有任何一站讀得懂。

這個系列到這裡結束。下一個系列從一件事變成五件,五件變成二十五件開始。

常見問題

Claude Code 是在本機跑還是在雲端跑?
在本機。它是跑在你終端機裡的程式,用你的 shell、你的檔案和你自己的助理帳號,工作沒有哪一段放在別人的主機上。這個問題要等到你想用手機看 session 時才變得重要,因為這時得有東西連到那台機器。用 Clawdline 的話,連過去的是一條中繼,不是一台幫你跑工作的主機:session 照樣在你的機器上跑,選用的 Cloud 只負責讓手機連得到這台機器,它自己沒有地方可以跑工作。代價也很直接:機器睡著時就沒有東西可連。送給沒連線機器的指令會當場失敗並告訴你,不會排進佇列,等你早就忘了這件事才突然執行。
讓手機看得到我的 Claude Code session,有哪些資料會離開我的機器?
要分兩部分看,而大部分的回答只講第一部分。第一部分在網路上:中繼要把封包送到對的地方,所以看得到信封上的欄位、連線時間和位元組數。prompt、回答、對話記錄、程式碼、檔案路徑、附件和排程內容都不在其中,它們離開你的機器之前就已經加密封好。第二部分不在網路上,因為你得先有帳號,才會有任何信封:控制平面存著你的帳號與訂閱狀態、機器名稱與最後上線時間、你的裝置和它們的權限與公鑰,還有我們拿來計費的用量數字。Clawdline 在安全性頁面把兩份清單逐欄列出來,建議直接去讀,不要只看摘要。一份能拿去和協定逐項對照的清單,比一個「安全」的形容詞可靠得多。
如果有人偷走我的登入,或是我把所有裝置都弄丟了,會怎樣?
這兩個問題其實是同一個答案,也是檢驗端對端加密說法最誠實的方式。偷走你登入 session 的人,可以在帳號上加一個瀏覽裝置,卻沒辦法讓它讀懂任何內容。因為內容金鑰只會在一個已經有金鑰的裝置批准新裝置時送過去,我們的伺服器自己也湊不出一把。指令也一樣:每一個指令都由送出的裝置用自己的金鑰簽章,你的機器再拿本機的配對清單核對,所以帳號被盜不等於對方能在你的機器上下指令。代價就是第二個問題的答案。伺服器上沒有東西解得開你的內容,也就沒有東西救得回來。復原要靠一組你自己保管的復原碼,而 Clawdline 的安全性頁面把這組復原碼、裝置清單和加密歷史保險庫列為「正在建置」,還沒有上線。就算所有裝置都弄丟,工作本身還在,因為準確資料來源一直都是你的機器。