隱私權政策
最近更新:2026 年 8 月
概述
DuckTerm(以下稱「本 App」)是由獨立開發者開發與營運、支援 iPhone 與 Android 的行動 SSH 用戶端暨 AI Agent 控制台。我們重視你的隱私。本政策說明 App 會存取哪些資料、如何使用,以及你擁有的權利。
SSH 憑證與私密金鑰
你輸入的密碼、私密金鑰 (.pem)、密碼片語及其他驗證資料儲存在你的裝置上——iPhone 上位於 iOS 鑰匙圈,Android 上位於由 Android Keystore 保護的加密 Vault——並且絕不傳送到 DuckTerm 的伺服器。
iOS 上共有三條同步通道。① DuckTerm 選用的 iCloud 同步(App 內開關)只攜帶連線中繼資料——絕不攜帶憑證;② 憑證存放在鑰匙圈的 iCloud 可同步分區中,系統啟用 iCloud 鑰匙圈 時由 Apple 端對端加密複製到同一 Apple ID 的裝置;③ 推播配對權杖(向 DuckTerm 推播中繼驗證用的 bearer)存於可同步鑰匙圈,並另經 Apple 的 iCloud 鍵值儲存鏡像,用於裝置間自動配對——這條通道不受 App 內同步開關控制。①②中的 SSH 憑證與中繼資料我們無法讀取;③的配對權杖則依設計不同——它會隨每次推播請求傳送給 DuckTerm 中繼,由中繼驗證用於鑑權,除此之外不作他用。
Android 上如果你啟用 Google Drive 同步,完整的連線設定檔——包括密碼、金鑰與跳板/Proxy 憑證——會存入你 Google 帳戶的私有 Drive appDataFolder。Google 會保護該檔案的傳輸與靜態儲存。選用的 DuckTerm 管理憑證欄位加密預設關閉。啟用後,它會使用資料加密金鑰加密憑證中的機密欄位;原始金鑰保留在受 Android Keystore 保護的本機儲存中,Drive 則存放一份以密碼片語封裝的復原金鑰。無論是否啟用,設定檔中繼資料、指令片段、部分設定、快速鍵與主題在 Vault 檔案內都保持明文。關閉憑證加密時,持有有效 DuckTerm Drive 授權的一方也可讀取機密欄位;appDataFolder 在一般 Drive 介面中不可見。
伺服器清單、工作區與指令片段
已儲存的伺服器項目、工作區、指令片段與快速鍵都存放在本機。若你在設定中啟用同步:iOS 上 iCloud(CloudKit) 會同步伺服器中繼資料(包括主機、連接埠、使用者名稱、跳板/Proxy 拓撲與啟動指令)以及工作區;不會同步指令片段、快速鍵、密碼或私密金鑰。憑證依上文所述使用 iCloud Keychain。Android 上,你私有的 Google Drive appDataFolder Vault 會同步完整連線設定檔、獨立 SSH 金鑰、指令片段、部分設定、自訂快速鍵與主題。iCloud 與 Drive 不會彼此同步。我們不會另行營運儲存這些資料的設定檔同步伺服器。
SSH、Mosh 與 SFTP 流量
SSH、Mosh 與 SFTP 工作階段會從你的手機或平板直接連到指定主機。我們不會代理、解密或儲存這些流量。若你設定 HTTP/SOCKS5 Proxy 或 ProxyJump 跳板,該節點也由你控制;DuckTerm 只依照你的設定傳送封包。
裝置權限
相機只用於掃描電腦上的 DuckTerm Hookd 或另一台 DuckTerm 裝置顯示的配對 QR Code。QR 畫面只在裝置上處理,不會儲存或上傳。你也可以不授予相機權限,改為輸入畫面上的 8 字元配對碼。
系統照片選擇器可讓你選擇要上傳到自己的 SSH 主機,或附加到 Agent 回覆的圖片。DuckTerm 只會取得你主動選擇的照片。在 iOS 上,你可以持續授權部分照片或整個圖庫;即使不授予持續的照片圖庫權限,仍可透過系統選擇器逐次選取照片。
Face ID 可保護整個 App 或個別伺服器工作階段。生物辨識比對由 iOS 完成;DuckTerm 只會收到驗證是否成功的結果,不會取得臉部資料或生物辨識模板。
只有在使用語音輸入終端機指令或 Agent 回覆時,才會要求麥克風與語音辨識權限。系統語音和選用 ChatGPT 語音的處理路徑,請見下方「語音輸入」。
裝置與配對識別碼
為完成配對、推播投遞、權益驗證和相容的 UI 更新,DuckTerm 可能處理 APN/FCM 推播 Token、安裝或裝置識別碼、配對身分、語言與地區、App 版本、Build 編號與發布渠道。這些識別碼會為提供 App 功能而與你的 DuckTerm 配對或商店權益連結,不會用於廣告或跨 App 追蹤。
推播中繼與 Agent 互動流量
Agent 配對與收件匣向免費使用者開放。平台推播先提供 3 天試用,之後依伺服器端執行的免費每日額度投遞;Pro 取消該上限。通知內容——事件類型、工作階段名稱、標題,以及由 Agent 活動產生的簡短內容預覽——在 iOS 透過 APN、Android 透過 FCM,並經過我們的推播中繼,以你的配對身分為索引供投遞與去重;該內容預計在中繼收到後約 60–65 分鐘刪除,清理作業每 5 分鐘及服務啟動時執行。鎖定畫面的「即時動態」(僅 iOS)會在你追蹤工作階段期間保存目前任務狀態(Prompt 摘要與最後一行輸出);停止追蹤後約一分鐘內清空內容,任何任務狀態會在最後一次事件約 24 小時後整筆刪除。這些內容只用於投遞通知,絕不用於廣告、側寫或轉售。
中繼也承載 App 與已配對 Daemon 之間的互動流量:核准與 AskUser 答案、文字回覆、Live Preview 備援、圖片備援,以及——僅在你選用時——實驗性 ChatGPT 語音音訊。Live Preview 與圖片資料在可用時優先使用 LAN/P2P;P2P 可能使用 TURN。中繼會在傳輸途中轉送回覆、圖片與音訊內容,不會將其明文儲存至通知事件資料庫。Payload hash 以及路由與投遞中繼資料會另行儲存,用於防止重複投遞並維運已配對裝置;它們不適用通知內容約一小時的保留規則。
收件匣與快照(裝置端)
投遞完成後,收件匣的主記錄與終端機工作階段快照(tmux、psmux、Herdr 與本機 Shell)會儲存在你的裝置上;傳輸過程可能使用上述中繼路徑。免費版收件匣保留 30 天,Pro 版不限期限。你可以隨時從設定刪除單一項目或清空整個收件匣。
語音輸入
預設的語音輸入(Mic / Wispr)使用平台的系統語音辨識——iOS 上是 Apple Speech 框架,Android 上是裝置內建的語音辨識器。音訊在裝置端處理或經網路交由平台廠商的語音服務處理,取決於平台、裝置與已安裝的語言套件;若平台支援,可在裝置設定中要求僅使用裝置端辨識。使用系統辨識時,DuckTerm 本身不會錄製、儲存或接收你的音訊。
另外提供一個選用的實驗性 ChatGPT 語音辨識方式。選擇它時,DuckTerm 會在你的裝置上錄製一段暫存音訊,經 DuckTerm 中繼傳送到你已配對的開發機,再由開發機提交給 ChatGPT(OpenAI)進行轉寫。音訊只用於該次轉寫:暫存檔上傳後即刪除,中繼僅瞬時傳輸、不留存音訊;OpenAI 依其自身條款處理。若不希望音訊被送往 DuckTerm 中繼或 OpenAI,請使用預設的系統辨識——系統辨識本身是否透過網路處理,取決於平台、裝置與語言套件。OpenAI 的處理方式請見 openai.com/policies/privacy-policy。
當機報告(Sentry)
我們使用 Sentry 蒐集假名化的當機與效能診斷資料,以協助找出並修正問題。報告可能包含:
- 裝置型號與作業系統版本
- App 版本與 Build 編號
- 當機堆疊追蹤
- 基本效能指標
當機報告絕不包含 SSH 憑證、密碼、私密金鑰或終端機緩衝內容。為重現錯誤,診斷情境可能包含不屬於憑證的中繼資料,例如伺服器主機名稱與連接埠或通知標題。授權 Token、密碼等敏感欄位會在傳送前自動清除。你可以在設定中關閉當機報告。
沒有廣告與追蹤
DuckTerm 不包含廣告 SDK 或跨 App 追蹤器。可能為本文所述功能處理資料的服務包括 Apple 平台服務(例如 APN、CloudKit 與 Speech)、Google 平台服務(例如 FCM 與 Drive)、Sentry、RevenueCat,以及——只有在你選擇 ChatGPT 語音時——OpenAI。它們只會在各自適用的隱私與合約保障下,為提供所述功能而處理資料。我們不會出售你的資料、不將其用於廣告,也不會為跨 App 追蹤而分享。
App 內購買
Pro 訂閱與永久買斷由你購買的商店處理——iOS 上是 Apple App Store,Android 上是 Google Play。我們不會接收或儲存你的付款資訊。權益驗證由 RevenueCat 代為處理購買收據與訂閱狀態。
刪除資料
在 App 內刪除某台伺服器或已儲存的金鑰,即會將對應憑證從鑰匙圈 / Keystore Vault 中移除。解除安裝 App 會刪除本機資料庫與檔案;iOS 上鑰匙圈項目可能依系統行為保留(若啟用 iCloud 鑰匙圈,也會留在雲端),想徹底清除憑證請先在 App 內刪除伺服器。雲端資料必須在源頭刪除:iOS 請前往 Apple 帳號 → iCloud → 管理帳號儲存空間 → DuckTerm;Android 請開啟 Google Drive 網頁版 → 設定 → 「管理應用程式」,刪除 DuckTerm 的隱藏應用程式資料。關閉同步或中斷 Drive 連線並不會刪除遠端資料。
上述步驟目前不會移除跨裝置推播配對 Token 或所有中繼端裝置註冊。請聯絡 duckterm@limitwatch.app 停用配對並要求刪除中繼端識別碼。通知與任務內容會依上文所述保留期限到期;在設定中關閉當機報告,可停止向 Sentry 提交新的診斷資料。
兒童隱私
DuckTerm 並非為 13 歲以下兒童設計,我們不會在知情狀況下蒐集兒童的個人資訊。
政策變更
我們可能不時更新本隱私權政策。任何變更都會發布在此頁面,並更新修訂日期。
聯絡我們
若對本隱私權政策有任何疑問,請寄信至 duckterm@limitwatch.app。