隐私政策
最近更新:2026 年 8 月
总览
DuckTerm("本应用")是由独立开发者开发与运营的 iPhone 与 Android 移动 SSH 客户端及 AI agent 控制台。我们认真对待你的隐私。本政策说明应用访问哪些数据、如何使用,以及你的权利。
SSH 凭据与私钥
你输入的密码、私钥(.pem)、口令短语等认证材料存放在你的设备上——iPhone 上是 iOS Keychain,Android 上是由 Android Keystore 保护的加密 vault——并且绝不发送到 DuckTerm 的服务器。
iOS 上共有三条同步通道。① DuckTerm 可选的 iCloud 同步(App 内开关)只带连接元数据——从不带凭据;② 凭据存放在 Keychain 的 iCloud 可同步分区里,系统开启 iCloud Keychain 时由 Apple 端到端加密复制到同 Apple ID 设备;③ 推送配对令牌(向 DuckTerm 推送中继鉴权用的 bearer)存于可同步 Keychain,并另经 Apple 的 iCloud 键值存储镜像,用于设备间自动配对——这条通道不受 App 内同步开关控制。①②中的 SSH 凭据与元数据我们无法读取;③的配对令牌则按设计不同——它会随每次推送请求发送给 DuckTerm 中继,由中继校验用于鉴权,除此之外不作他用。
Android 上如果你开启 Google Drive 同步,完整连接档案——包括密码、密钥与跳板/代理凭据——会存入你 Google 账户的私有 Drive appDataFolder。Google 会保护该文件的传输与静态存储。可选的 DuckTerm 管理的凭据字段加密默认关闭。开启后,它使用数据加密密钥加密凭据中的机密字段;原始密钥保留在由 Android Keystore 保护的本地存储中,Drive 则存放一份由口令封装的恢复密钥。无论是否开启,档案元数据、snippets、部分设置、shortcuts 与主题在 vault 文件内均保持明文。关闭凭据加密时,持有有效 DuckTerm Drive 授权的一方也可读取机密字段;appDataFolder 在普通 Drive 界面中不可见。
服务器列表、工作区与代码片段
已保存的服务器条目、工作区、snippets 与 shortcuts 默认存在本地。如果你在设置中启用同步:iOS 上 iCloud (CloudKit) 会同步服务器元数据(包括 host、port、username、跳板/代理拓扑与启动命令)以及工作区;不会同步 snippets、shortcuts、密码或私钥。凭据按上文所述使用 iCloud Keychain。Android 上,你私有的 Google Drive appDataFolder vault 会同步完整连接档案、独立 SSH 密钥、snippets、部分设置、自定义 shortcuts 与主题。iCloud 与 Drive 不会互相同步。我们不运营用于保存这些数据的独立档案同步服务器。
SSH、Mosh 与 SFTP 流量
SSH、Mosh 与 SFTP 会话从你的手机或平板直连你指定的主机。我们不代理、不解密、不存储这些流量。如果你配了 HTTP/SOCKS5 代理或 ProxyJump 跳板,那一跳也由你自己控制 —— DuckTerm 仅按你配置的路径转发数据包。
设备权限
相机只用于扫描电脑上的 DuckTerm Hookd 或另一台 DuckTerm 设备显示的配对二维码。二维码画面仅在设备本地处理,不会保存或上传;你也可以不授予相机权限,改为手动输入画面上的 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 分钟及服务启动时运行。锁屏实时活动(Live Activity,仅 iOS)方面,你关注会话期间中继保留当前任务状态(prompt 摘要与最后一行输出);取消关注后这部分内容约 1 分钟内清空,任何任务状态会在最后一次事件约 24 小时后整行删除。这些内容只用于投递通知——绝不用于广告、画像或转售。
中继还承载 App 与已配对守护进程之间的互动流量:审批与 AskUser 答案、文本回复、Live Preview 兜底、图片兜底,以及——仅在你选用时——实验性 ChatGPT 语音音频。Live Preview 与图片数据可用时优先走 LAN/P2P;P2P 可能使用 TURN。中继会在传输途中转发回复、图片与音频内容,不会将其明文存入通知事件数据库。Payload hash 以及路由和投递元数据会另行存储,用于防止重复投递和运行已配对设备;它们不适用通知内容约 1 小时的保留规则。
Inbox 与 Snapshot(设备本地)
投递完成后,Inbox 的主记录与终端会话快照(tmux、psmux、Herdr 与本地 Shell)存储在你的设备上;传输过程可能使用上述中继路径。Free 版 Inbox 保留 30 天,Pro 版无限。你可随时在设置中删除单条内容或清空整个 Inbox。
语音输入
默认语音输入(Mic / Wispr)使用平台的系统语音识别——iOS 上是 Apple Speech 框架,Android 上是设备自带的语音识别器。音频在设备端处理还是经网络由平台语音服务处理,取决于平台、设备与已装语言包;如平台支持,可在设备设置中强制设备端识别。使用系统识别时,DuckTerm 自身不录制、不存储、也不会收到你的音频。
另有一个可选的实验性 ChatGPT 语音识别方式。选择它后,DuckTerm 会在设备上录制一段临时音频,经 DuckTerm 中继发送到你配对的开发机,由开发机提交给 ChatGPT(OpenAI)转写。音频只用于该次转写:临时文件上传后即删除,中继仅瞬时传输、不留存音频;OpenAI 按其自身条款处理。不希望音频发送给 DuckTerm 中继或 OpenAI,请使用默认的系统识别——系统识别本身是否联网处理取决于平台、设备与语言包。OpenAI 的处理方式见 openai.com/policies/privacy-policy。
崩溃报告(Sentry)
我们使用 Sentry 收集假名化的崩溃与性能诊断数据,用以发现并修复 bug。诊断报告可能包含:
- 设备型号与操作系统版本
- App 版本号与 build 号
- 崩溃栈
- 基础性能指标
崩溃报告绝不包含你的 SSH 凭据、密码、私钥或终端缓冲区内容。诊断上下文可能带有非凭据类元数据(如服务器 hostname 与端口、通知标题),用于复现错误。授权 token、密码等敏感字段在传输前自动脱敏。设置中可关闭崩溃上报。
无广告、无追踪
DuckTerm 不内置广告 SDK 或跨 App 追踪器。可能为本文所述功能处理数据的服务包括 Apple 平台服务(如 APN、CloudKit 与 Speech)、Google 平台服务(如 FCM 与 Drive)、Sentry、RevenueCat,以及——仅当你选择 ChatGPT 语音时——OpenAI。它们只会在各自适用的隐私与合同保障下,为提供所述功能而处理数据。我们不出售你的数据、不将其用于广告、也不为跨 App 追踪而共享。
应用内购买
Pro 订阅与永久买断由你购买所在的商店处理——iOS 上是 Apple App Store,Android 上是 Google Play。我们不接收、不存储你的支付信息。权益校验由 RevenueCat 代为处理购买凭据与订阅状态。
数据删除
在 App 内删除某台服务器或某把已存密钥,即会把对应凭据从 Keychain / Keystore vault 中移除。卸载 App 会删除本机数据库与文件;iOS 上 Keychain 条目可能按系统行为保留(若开启 iCloud Keychain 还会留在云端),想彻底清掉凭据请先在 App 内删除服务器。云端数据须在源头删除:iOS 请前往 Apple 账户 → iCloud → 管理账户存储空间 → DuckTerm;Android 打开 Google Drive 网页版 → 设置 → "管理应用",删除 DuckTerm 的隐藏应用数据。关闭同步或断开 Drive 连接不会删除远端数据。
上述步骤目前不会移除跨设备推送配对 Token 或所有中继侧设备注册。请联系 duckterm@limitwatch.app 停用配对并请求删除中继侧标识符。通知和任务内容会按上文所述保留期限自动过期;在设置中关闭崩溃报告,可停止向 Sentry 提交新的诊断数据。
儿童隐私
DuckTerm 不面向 13 岁以下儿童,我们不会在知情情况下收集儿童的个人信息。
政策变更
本政策可能不定期更新。变更会发布在本页并更新顶部的修订日期。
联系我们
如对本政策有疑问,请联系 duckterm@limitwatch.app。