> For the complete documentation index, see [llms.txt](https://docs.goassay.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.goassay.ai/developers/zh/shi-yong-gong-ju-jin-jie/security-model.md).

# 安全模型

了解本地 MCP 能防范哪些威胁，以及保护的边界。

{% hint style="warning" %}
请将链上支出上限设为电脑被入侵后你能承受损失的金额。
{% endhint %}

支付密钥保留在电脑上。Assay 可以请求付款，但由本地进程决定是否签名。

## 各项内容存放在哪里

| 项目                   | 存放位置                        | 允许的操作                               |
| -------------------- | --------------------------- | ----------------------------------- |
| OAuth 访问令牌和刷新令牌      | 操作系统密钥链                     | 以你批准的智能体身份登录。需要时，令牌会发送到内置 Assay 服务。 |
| 支付私钥                 | 在本地创建；保存在操作系统密钥链中，由本地签名进程读取 | 在钱包批准的权限内为付款签名。私钥绝不会通过 MCP 离开电脑。    |
| 支付密钥的公钥地址            | 本地配置文件和 Assay               | 识别密钥，并在批准时比对指纹。它不能签名。               |
| 本地限额、获准付费的 URL 和支出记录 | 操作系统账户中的私有配置文件              | 约束正常的本地签名流程。这些文件不含支付私钥或 OAuth 令牌。   |
| 密钥权限、有效期和账户上限        | Robinhood Chain 上的支付合约      | 约束已签名 USDG 付款的兑付。                   |

支持的存储包括 macOS Keychain、Windows Credential Manager 和 Linux Secret Service。不支持回退到文件存储：密钥链不存在或已锁定时，无法启动。

## 各方能做什么

| 参与方或威胁              | 保护措施                                                                | 保护范围的限制                                                                        |
| ------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------------------ |
| Assay 服务器，包括被入侵的服务器 | 无法通过协议取得支付私钥。请求必须通过本地检查，包括内置付款目标和资产、报价、密钥权限、上限、提供方和工具。              | 报价和工具结果由服务器提供。恶意服务器可能误导智能体，或请求符合所有检查的付款。本地检查无法证明结果有用或真实。                       |
| AI 指令或网页            | 没有 MCP 工具能修改本地安全设置。修改设置需要交互式终端；钱包批准会修改链上权限。服务器请求不会作为请求转发给客户端。       | AI 仍可调用获准的工具，并在限额内支出。提示注入可能浪费这些预算。拥有终端或代码执行权限的 AI 也可能越过下述本地边界。                 |
| 共享项目配置              | 无法通过修改 `HOME` 或 `XDG_CONFIG_HOME` 移动安全文件。会拒绝绕过证书检查的设置；环境代理需要本地明确允许。 | 项目配置会启动程序。Node 预加载代码可以在 MCP 开始检查前运行。你在客户端批准项目服务器这一步至关重要。额外的证书颁发机构只会触发警告，不会被拒绝。 |
| 以你的操作系统用户身份运行的其他程序  | 常规 MCP 设置命令会拒绝管道输入。私有配置文件的权限可防范其他用户。                                | 这无法隔离你自己的程序。它们可能读取密钥链、修改本地状态或使用终端。终端检查无法确认输入来自人类。                              |

在 macOS 上，密钥链访问列表识别的是 `node` 二进制文件。其他 Node 脚本可能无需新的提示就能读取条目。升级 Node 后可能再次提示；选择 **Always Allow** 前请检查访问权限。在 Linux 和 Windows 上，以你的用户身份运行的程序可以访问已解锁的存储。

MCP 仅向内置 Assay 主机发送凭据，并拒绝重定向。这能限制凭据被转向其他地址，但不会向 Assay 或处理调用的提供方隐藏工具参数。

## 最后一道防线：链上上限

窃取支付密钥的程序可以绕过本地限额和本地提供方列表。支付合约仍会检查密钥权限、有效期、单次调用和支出窗口上限，以及账户上限。请根据这类风险将上限保持在较低水平。默认上限和窗口机制见[支出限额](/developers/zh/shi-yong-gong-ju-ru-men/spending-limits.md)。

退出登录会删除此配置文件的本地支付密钥和令牌，但**不会**撤销密钥的链上权限。如果怀疑别处存在副本，请按退出提示在 Assay 中选择 **Stop it**，并批准钱包签名。

## 确认是否成功

查看当前配置文件，并运行配置检查：

```sh
npx -y @goassay-ai/mcp status
npx -y @goassay-ai/mcp doctor
```

核对显示的智能体、密钥指纹、本地上限和 **Paid URLs**。`doctor` 会报告环境和项目配置的检查结果；检查通过不能证明操作系统用户或电脑上的所有程序都可信。

<details>

<summary>可选：了解撤销权限和诊断日志</summary>

停用密钥或降低链上上限不会立即回滚付款。合约有宽限期，在密钥到期前，仍可能接受已撤销的密钥或之前的上限。本地代理读取到授权已失效后会拒绝签名；持有被盗密钥的程序可以绕过这项本地检查。

默认日志级别为 `warn`。日志输出到 stderr，也可选写入本地日志文件。日志记录器会隐去凭据和签名，并排除工具参数和结果。日志用于辅助诊断，不能记录以你的用户账户运行的其他程序的每一步操作。

</details>

## 错误

| 原因         | 含义          | 解决方法                                                                                     |
| ---------- | ----------- | ---------------------------------------------------------------------------------------- |
| 密钥链不可用或已锁定 | 无法安全读取机密信息。 | 使操作系统存储可用或将其解锁，然后重启客户端。                                                                  |
| 付款被拒绝      | 某项本地检查失败。   | 阅读拒绝原因；请勿绕过检查来完成调用。参阅[付费流程](/developers/zh/shi-yong-gong-ju-ru-men/how-paying-works.md)。 |

## 延伸阅读

* [安装 assay-mcp](/developers/zh/shi-yong-gong-ju-ru-men/install-assay-mcp.md)
* [支出限额](/developers/zh/shi-yong-gong-ju-ru-men/spending-limits.md)

## 下一步

* [URL 与配置文件](/developers/zh/shi-yong-gong-ju-jin-jie/urls-and-profiles.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.goassay.ai/developers/zh/shi-yong-gong-ju-jin-jie/security-model.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
