---
title: 数据安全
nav: 数据安全
summary: 我们看不到什么、能看到哪些信息、为什么；Beta 版还没做到的地方也写在这里。
order: 7
---

# 数据安全

先说结论：**你和 Agent 说的话、它回你的话、它要你批准的内容，我们都看不到（唯一的例外见下一段）。** 这些内容在你的手机和你的电脑之间端到端加密，只有这两端能解开。你现在买到的 Beta，所有用户都是这样：文字、图片、文件和语音都加密。我们的服务器只负责转发，拿到的是看不懂的乱码。

唯一的例外是网页版：手机上的网页是我们的服务器发下来的，万一我们（或黑进我们服务器的人）改了网页，就能看到你手机屏幕上的内容。详见下面「Beta 版还没做到的」。

下面分三块说：我们看不到什么，我们能看到什么，Beta 版还有哪些没做到。

## 我们看不到的

- 你在手机上发的每一条消息，以及图片、文件和语音；
- Agent 的回复和它的工作状态；
- 审批卡片上的内容，以及你点了批准还是拒绝；
- 配对用的 6 位码、配对链接、你的遥控器配对密码；
- 你电脑上的文件、Agent 的工作成果、它的记忆、聊天记录和操作记录；
- 你在工作流设计向导里的回答，以及它生成的文件；
- 你在手机卡片上输入的管理员密码和粘贴的 API key。

为什么看不到：

- **Telegram 机器人上的客人和你分开。** 如果你让 Agent J 的 Telegram 机器人也接待客人（默认关闭），只有你配对的私聊进主 Agent；其他人都交给你选的客服 bot，独立会话、独立限额和审核，聊天只存在你电脑上这个 bot 的会话里。
- **加手机必须经过你。** 新手机要配对，三条路都要你本人：在账户页用通行密钥或那台电脑的遥控器配对密码确认；在你的电脑终端输入手机显示的 6 位码和遥控器配对密码；或者在已配对的手机上确认。你电脑上的 AI 没法替你加手机。账户页这条路依赖签名控制平面，被攻破时可能加手机，见下文；用 `agentj remote-pair off` 可以关掉它。

## 发给你自己的显示什么、遮住什么

发给你本人的内容不打码。是不是发给本人，由 Agent J 按目的地判断，不靠 Agent 自觉。包括：你已配对的手机和网页、Telegram 里你和自己的 bot 的私聊、[通讯录](/docs/contacts/) 0 号位里你的邮箱（以及邮件通道里标成「我本人」的邮箱）。

- **原样送达**：邮箱、电话号码、人名、地址、文件路径、内网地址、链接（带参数的也一样）、访问码、一次性验证码、报告授权码。这些码本来就是要你拿去用的，遮了反而用不了。
- **仍然不发明文**：API key、token、私钥、密码、助记词这类真正的凭据。邮件和 Telegram 都存在第三方服务器上，泄露面大，所以发给你自己也不带它们：Agent J 会把凭据从正文里拿掉，原处留一句说明，同时在你的手机上弹出一张密钥领取卡，用 Face ID 打开。手机和网页上，这类长串显示成 `<redacted>`；要把密钥交给你，Agent 用 `agentj secret send` 发领取卡。

发给别人的照旧严格脱敏，邮箱和电话也会遮：反馈、广场、客服、好友、客服 bot、Telegram 群、公开的网页报告，以及收件人里有任何一个不是你本人的邮件。

## 别人能看到的

有些服务本来就会经手你的内容，这跟我们无关，但你应该知道：

- **AI 公司**（Anthropic、OpenAI、智谱、DeepSeek 等）：对话要交给模型处理，所以厂商能看到，订单、买家信息出现在对话里也一样。对话从你的电脑直接发给它们，用的是你自己的账号，不经过我们。它们怎么保存数据，以它们的隐私政策为准，比如 [Anthropic 的隐私政策](https://www.anthropic.com/legal/privacy)、[OpenAI 的隐私政策](https://openai.com/policies/privacy-policy/)。
- **你让 Agent 用的其他服务**：比如电商平台、邮件、出图工具，各自能看到它们处理的那部分。
- **锁屏提醒**：由 Google、Apple 或 Mozilla 的推送服务送到你手机上。它们知道你的电脑在什么时间给这部手机发过一条提醒，但提醒里只有「有新回复」或「有一个请求等你批准」，没有内容。
- **遥控器都不在线时的提醒**：有审批卡在等你、而你的遥控器都不在线时，如果你接了 Telegram 或设好了邮箱，Agent J 会往你的 Telegram 私聊和你自己的邮箱发一句提醒，只说有几张卡在等你，不写卡片内容。Telegram 和你的邮箱服务商能看到这一句。
- **GitHub**（一个存放代码的网站）：电脑上的程序每天会去 GitHub 查一次有没有新版本，GitHub 能看到你电脑的 IP、时间和程序版本。不想让它查：在电脑上运行 `agentj update auto off`。
- **云服务器**：如果你把 Agent 装在自己租的云服务器上，能登录你云账号控制台的人，可以读到服务器上的文件。云账号有多安全，这台服务器就有多安全。

## 我们能看到的

为了让账号、付费和连接能用，我们能看到下面这些信息。它们不是你的对话内容，但我们照实列出来：

| 类别 | 我们能看到什么 |
|---|---|
| 账号 | 你的邮箱、通行密钥的公钥、登录时间 |
| Agent J 账号 | 账号 ID、团队名称（如果填了）、成员的邮箱 |
| Agent | 你给 Agent 起的名字；电脑的名字（可以关掉：在电脑上运行 `agentj report-hostname off`）；在不在线；配了几部手机、手机自己起的名字、配对时间；电脑上程序的版本 |
| 付款 | 订阅状态、席位数、账单结果。卡号只在 Stripe，我们看不到 |
| 发给别人的席位 | 状态、时间、你填的对方邮箱、谁打开了链接、加入的是哪台电脑。设置码本身我们只存一个校验值，看不到原文 |
| 连接 | 哪台电脑在什么时间连了我们的转发服务器、IP、每次传输的大小和时间（内容补齐成固定大小，减少从长度猜内容） |
| IP | 用来防止滥用，打乱后保存，看不出原来是什么，48 小时后删除 |
| 模板下载 | 哪台电脑在什么时间要过模板（48 小时后删除） |
| 反馈 | 你同意发给我们的反馈原文。这是故意让我们看的，发之前已经去掉了敏感信息 |
| 广场 | 你同意公开的帖子和回复。所有有付费席位的账号都能看到，我们也能 |
| 客服 | 你的 Agent 主动问客服的内容（发出前已经去掉密钥、邮箱、电话、用户名和路径），以及它选择附上的 `agentj doctor` 自检结果。你的对话、文件和密钥，客服看不到。见 [遇到问题找客服](/docs/support/) |
| 官方通知 | 每条通知送到了哪些电脑、什么时候送到、什么时候在手机上读过；为了决定发给谁，还看得到每台电脑的 Agent J 版本、用的哪个 AI 编程工具、在不在线、配了几部手机。看不到对话、邮箱、电脑和手机的名字。见 [官方通知](/docs/notices/) |
| 广场里的技能和工作流 | 你同意分享的包的全部文字（所有有付费席位的账号都能下载，我们也能读）；哪台电脑装了哪个包的哪个版本；哪个账号点赞或举报了哪个包。看不到装好的东西在你电脑上做了什么 |

## Beta 版还没做到的

这些地方我们现在还做不到，或者还没法让你自己核对：

- **手机上的网页由我们的服务器下发。** 加密在网页里完成。如果我们（或者黑进我们服务器的人）改了网页代码，就能看到你在这个页面上看到的内容。我们的目标是「网页被改了你会知道」，但 Beta 版还没做到：还没有签名的公开发布记录，你还没法独立核对手机上加载的就是公开的那一版。点开页面顶部的「网页版」标识，能看到这段说明和当前版本的校验值。
- **没有原生 App。** 原生 App 能把界面打包、签名后发给你，不用每次从我们这里取。这是之后的计划，现在还没有。
- **程序更新还没有数字签名。** 安装说明靠「网站上的那份、网站公布的校验值、GitHub 上公开的那份三处一致」来防篡改；电脑端程序装的是 GitHub 上一个固定的版本标签，安装说明里写着它的校验值。这些都比签名弱。电脑端程序、手机网页版和安装说明的代码在 GitHub 上公开；账号后台、转发服务器和网站的代码还没公开。升级方式由你选：默认收到我们签名的新版本通知后，Agent 会自动升级再告诉你，也可以改成先问你；紧急安全修复总是马上升级。
- **没有第三方审计。** 现在靠的是我们自己的自动化测试，和两个 AI 模型交叉做的安全检查，这代替不了独立安全公司的审计。Beta 期间没有独立第三方审计，做完会在数据安全页上公布。
- **隔离不是万能的。** Agent 和你的电脑共用网络。如果你电脑上开着某些接受你身份的本地服务（比如本机的 SSH、浏览器调试端口），你批准过的命令仍可能借它们绕出去。详见下面的技术细节。
- **Codex 里你以前存过的「总是允许」规则**，匹配到的命令按 Codex 自己的规则直接执行，不会问手机。`agentj doctor` 会数出你有几条，删不删由你决定。

我们不会说「绝对安全」「零知识」或者「任何人都看不到你的数据」。模型厂商看得到对话，我们看得到上面那张表里的信息，这是实情。

<details>
<summary>技术细节</summary>

这一节写给想深究的人和你的 AI，会用到一些术语。

**加密与配对**

- 手机和电脑之间是端到端加密。配对时，用 Noise IKpsk2 握手（一种公开的加密握手协议，两台设备借它商量出只有彼此知道的钥匙）。之后每次连接用 Noise IK，每条消息单独加密和校验。会话密钥只在两端。所有用户都走这条加密通道，没有不加密的备用通道。
- 二维码由你的电脑生成，里面是电脑的公钥和一次性的配对密钥，5 分钟有效、只能用一次。手机显示的 6 位码由握手结果算出，你在电脑上输入，两边一致才算数；再加上遥控器配对密码（电脑上只存它的 scrypt 哈希：一种故意算得很慢的单向摘要，拿到也很难反推出口令；连续输错 5 次会锁定，锁定时间逐次加倍）。
- 转发服务器运行在 Cloudflare Workers 和 Durable Objects 上，只按通道号配对两端，原样转发加密帧，每帧补齐到 256 字节。它不存帧、不写内容日志、不持有任何密钥。你的电脑只向外连接，不开任何入站端口。
- 电脑连上转发服务器时要出示一张由账号服务签发的席位证书，里面只有通道号和到期时间（最长 3 天），没有账号和电脑的信息。没有有效席位的电脑连不上；账号服务暂时连不上时，电脑用手里的证书继续工作到期满。

**批准**

- 配对时手机生成一把不可导出的签名密钥（浏览器自带的加密功能 WebCrypto，Ed25519 签名算法）。每次批准或拒绝，手机都对「这台电脑、这部手机、请求编号、批或拒、内容摘要的哈希」签名，电脑核对后才执行，并写进本机的 approvals.log（只记哈希）。`agentj approvals --verify` 可以逐条重新核对。按「全放行」档位或「设了目标就不弹窗」自动批准的，以及你批准了离线时留下的卡后 Agent 重试执行的，记录里都会指回手机上那次签名确认，同样能核对。电脑每次用到「全放行」都会用那部手机现在的批准密钥重新核对这次签名，核对不过（比如配置文件是手改的，或者那部手机已解绑）就按「中等」处理。
- 删除记忆、全部停下、恢复、启用定时任务这些手机上的操作，也一样要签名。
- 额外的高危提醒（花钱、删除、对外发送、改密码或密钥、改价格）是可选的，默认关闭，可以在手机「设置」里打开。你的 AI 编程工具自己的权限规则一直生效；它要问权限时，问题会送到你手机上，Agent J 绝不替你回答。

共享会话里，只读取凭据而不显示（程序按名字读 `.env`）不再弹审批卡；改凭据、把凭据显示到屏幕上仍然要你在手机上点头，卡片不带具体内容。`agentj config approvals strict` 可以换回只要碰到凭据就问的旧规则。

**隔离**

- 独立会话里，Agent 在 Linux 上用 bubblewrap（一个开源的进程隔离工具）、在 macOS 上用系统自带的 sandbox-exec 沙箱运行。它用你的系统用户和登录，可以改你的 shell 和应用配置、管理它自己的后台服务，但看不到 agentj 的状态目录、密钥、手机名单和口令；ssh-agent 接口、别的终端会话（tmux、herdr、screen、zellij 等）和 docker / podman 默认对它隐藏。手机「设置」里可以允许 docker，也可以关掉隔离。
- 隔离起不来时（比如没装 bubblewrap），Agent 不会启动，不会悄悄裸跑。手机卡片会说明原因和修法；点「本次不隔离运行」并用主人的通行密钥验证，才放行这一次，下次启动照样检查隔离。
- 隔离不是一堵文件墙：Linux 上整个文件系统按原样挂进隔离（bubblewrap 的 `--dev-bind / /`），除了上面隐藏的几处，你的用户能读写的文件，Agent 也能读写。
- 剩下的风险：共用网络；启动后新开的、不在清单里的本地控制接口遮不住；为了让 Agent 管理自己的后台服务，你的用户服务管理器和会话总线（D-Bus）接回了隔离里，所以它经会话总线能找钥匙串要密钥，经服务管理器启动的程序在隔离之外运行；macOS 上没有进程隔离，Agent 能看到同一用户其他进程的命令行和环境变量（agentj 不在环境变量里放密钥）。
- Agent J 专用浏览器本来就是给 Agent 用的，它靠这个浏览器替你上网办事。这个浏览器的调试端口每次启动随机选，只在 127.0.0.1 上监听；它的资料目录在隐藏的 agentj 文件夹里，Agent 拷不走里面的文件。但调试协议没有密码，Agent 又和你共用网络，所以 Agent（或者任何以你的用户身份运行的程序）能经这个端口使用在里面登录过的网站，包括 cookie。你自己登记的浏览器（比如开在 9222 端口的那个）也一样。只在里面登录你愿意让 Agent 使用的网站。
- Codex：通过 codex app-server 驱动，沿用你自己的 Codex 审批和沙箱设置，Agent J 不另加规则。Codex 要问权限时，问题会送到你手机上。

**五项保证的现状**

| 保证 | 现状 |
|---|---|
| 手机和电脑之间端到端加密，我们不持有会话密钥 | 文字、图片、文件和语音都已上线，还不能由你独立核对 |
| 中继只见密文，伸不进你的电脑 | 已上线，还不能由你独立核对 |
| 显示明文的代码不由我们临时下发 | 还没做（需要原生 App） |
| 到达你电脑的代码都签名、公示，由你决定装不装 | 还没做签名和发布日志；升级方式由你选（自动或先问你，安全修复总是马上升级） |
| 凭据和主密钥只在你那一侧 | 手机上的密钥卡把 key 加密后直接存进你电脑上的文件；我们不存你的 key |

完整的逐项说明（每张表、每个保留期）见 [数据安全详细说明](/security/)。发现安全问题，请看 [联系我们](/docs/contact/)。

</details>

## 自动登录凭证（0.17.4）

为了让手机配对一次就一直能用，你的电脑会给这台手机发一个自动登录凭证，经加密通道送到手机，由 m.agentj.app 存成只给这个网址用的 Cookie：页面脚本读不到，也不会随别的请求发出去。手机丢了网页数据时，我们的网页服务只用它算出一个一次性的证明，证明只对这台手机新生成的钥匙有效，凭证本身不会再回到页面里；真正核对的是你的电脑。我们不保存、不记录它。要说清楚的是：网页服务在那一刻经手这个凭证，所以如果网页服务被改坏，理论上可以抢走这台手机的位置。真发生了，原来的手机会马上看到「另一边接管了」；电脑解绑手机后，凭证立即作废。

## 从另一台电脑给席位添加遥控器

目标电脑安装完成、绑定账号且在线后，在账户页找到它的席位卡，点「添加遥控器」，确认是你本人后用手机扫码即可，不用去目标电脑的终端。确认方式二选一：通行密钥（这台电脑上没有的话，在弹窗里选「使用手机或平板」，用手机确认）；或者输入那台电脑的遥控器配对密码。用通行密钥确认后，同一会话十分钟内免重复确认；二维码五分钟内只可添加一台设备。待批准设备也可在席位卡查看、批准；席位卡「更多」里的「查看电脑上等你处理的事」只在两种时候用：电脑被「全部停下」后要恢复，或 Agent 新建的定时任务等你启用；它跟席位和付费无关，欠费也不会停掉电脑上的任务。

默认允许账户页添加；目标电脑的主人可用 `agentj remote-pair off` 关闭。离线时不排队，开机后重试；旧版本按提示运行 `agentj update apply` 或从已有手机升级。新设备来源显示「经账户页添加」，其他遥控器收到通知。

账户页配对依赖签名控制平面。配对材料只以浏览器临时公钥加密回传，后端不保存明文；主机只核对控制平面的签名，不自己核对你的通行密钥：签名服务被攻破，仍可能给这台电脑加一部手机、解除「全部停下」、启用定时任务或给遥控器改名，而不经过电脑上的确认。新设备会通知你已有的手机；关掉开关（`agentj remote-pair off`）就拒绝这条路径。遥控器配对密码只在那台电脑上散列保存。在账户页输入它时，浏览器先用那台电脑临时给出的一次性公钥把它加密，只有那台电脑能解开、核对；我们的服务器只转发看不懂的密文，也不保存。连续输错 5 次，那台电脑会锁定一段时间。


## 公开客服 bot（0.17 候选）

主人可以在已配对手机的 `/bots` 管理客服，或让 Agent J 用 `agentj-bots` 技能配置产品资料、固定价格表和公司 HTTP API。公开网址 `/bots/<名字>` 与网页嵌入免费；主人电脑必须在线，访客不能进入主对话或审批通道。AI 回复可能有误，主人应审核对外资料和业务范围。

聊天、知识、工具定义和会话记录都在主人电脑。访客与电脑间的消息使用独立加密协议；云端只保存公共名字、展示资料、状态、限流和举报元数据。聊天默认保留 30 天，举报元数据保留 90 天。举报只传请求编号和类别，不上传聊天正文。首次访问仍信任网站提供的页面与公钥，不能防止恶意网页发布方替换页面。

Bot 共享主 Agent 当前使用的工具和套餐，支持 Claude Code、Codex、Gemini、OpenCode 及 key 型接入。个人订阅用于对外服务可能受服务商条款限制，主人须先确认并勾选风险提示。也可通过手机密钥卡添加自带 key。模型请求从主人电脑发给所选服务商；若选择 AgentsRelay，会经其中转，其政策是不记录请求和响应正文，这属于政策保证，不代表技术上看不到。Jev 审核必须使用主人自己的 OpenRouter 账户和 key，启用前真实验证 decisions，审核费用由该 OpenRouter 账户承担。模型服务商和 OpenRouter 会收到必要上下文，数据处理遵循各自政策。缺少 key、审核失败或不确定时停止外发，人工回复也过同一闸门。

默认每访客每天 20 条、每 bot 每天 100 条，主人跨 bot 每天合计 100 条和 100k 模型 tokens，审核与工具调用也计入预算；每席位最多一个启用 bot，并发默认 4、最多 16。主人可调低限额，超限或离线时礼貌停服。名字为小写字母、数字或连字符，3–32 位；保留词不能注册，改名或下架后旧名冻结 30 天。

查询工具只能访问主人批准的 HTTPS 域名；响应按字段白名单和长度截断。鉴权密钥只在主机运行时注入，不交给模型。访客自报订单号或邮箱只用于会话绑定，不等于身份核验；公司 API 仍须验证该客户是否有权访问记录。写入工具默认关闭，启用后每次调用都需主人在已配对手机批准。访客文字、知识和工具返回都不能授权修改配置、读取其他访客或泄露密钥；不支持 shell、任意文件或任意网址工具。Turnstile 只在独立验证页面运行，不接触聊天正文。


匿名访客的会话钥匙按 bot 存在独立的浏览器存储页面里，私钥不能导出。这个页面通过浏览器内部通道把钥匙交给隔离的聊天页面，父页面、人机验证页面和服务器都拿不到钥匙或聊天内容。24小时没有活动后会开启新会话；如果浏览器禁止跨站存储，刷新也会开启新会话。
