# 安全边界与问题报告

## 报告潜在漏洞

目前未启用 GitHub 私密漏洞报告。请先开一个**不含漏洞细节、利用步骤或真实秘密**的协调 issue，请求维护者安排私下渠道；确认渠道后再提供敏感复现。普通 issue、附件和日志中只放合成数据，版本、OS 和不敏感的影响概述即可。

如果真实凭证已泄露，应先向凭证提供方撤销或轮换；扫描或删除输出不能撤销已经泄露的凭证。功能缺陷使用普通 issue 模板，附脱敏复现。

## 原文扫描与模板

默认通过 `moon_scrub` 的 `secrets_only` 模式扫描读取快照，在骨架压缩前检查原文。命中后排除整个文件、Git 补丁或提交，避免只隐藏局部匹配而继续泄露同一项内容。header 和 instruction 在使用前也扫描；模板命中使整个打包失败。模板每段最多 1 MiB，指令文件是本地普通 UTF-8 文件。

检测是启发式的，可能漏报或误报，不能识别所有密钥、个人信息或业务机密。`--no-security-check` 关闭相应扫描；`--keep-full`、展示隐藏与压缩都不替代检查。分享前应审阅最终正文、索引、路径和 Git 信息；允许显示绝对路径时还会披露本机目录结构。规则和排除行为见 [检测说明](docs/security.md)。

## 只读 MCP 授权

MCP 主机在启动时固定本地根、选择规则、模板、Git、安全和输入限制，只读取授权源并派生内存上下文。客户端 `filePaths` 只能缩小启动白名单，`maxTokens` 只能降低主机 cap；请求不能改根、加载新配置或指令、关闭扫描或提高限额。资源 URI 必须精确匹配当前内存注册表，不是任意文件读取入口。

服务不提供修改仓库、执行客户端命令或远程获取的工具。`release_context` 只释放内存；新上下文成功提交前保留上一次成功缓存。进程自身仍持有启动用户的系统权限，MCP 的固定根与过滤不是 OS 沙箱；主机应选择可信根、限制客户端访问，并按需要在操作系统层隔离。协议与资源边界见 [MCP](docs/mcp.md)。

## 本地浏览器工作台

`--webui` 只绑定 `127.0.0.1`，授权启动目录及其子目录。目录浏览限制在授权范围，生成复用既有 Native 选择和扫描流程，下载由浏览器保存生成结果。页面不能提高主机限额、关闭扫描或加载仓库命令。服务检查 HTTP Host、Origin、JSON 请求和自定义请求头，页面资源不依赖远程 CDN。

该接口面向可信本机用户，不是多用户认证服务。调用方应控制授权目录及本机进程访问；HTTP 检查不代替操作系统隔离。具体输入、响应和超时限制见 [工作台指南](docs/webui.md)。

## 文件系统与输出提交

输入选择拒绝链接等非普通文件，并保留路径与读取检查。这些检查不构成能抵御并发恶意文件系统修改的沙箱；调用方应控制输入根及输出父目录，避免执行期间被不可信方替换。

普通输出使用同父临时文件，完成后原子替换目标普通文件，拒绝已有链接或非普通文件。分卷在已有且稳定的父目录中创建独占私有 staging，写入、sync、关闭后以 atomic no-replace 发布到**不存在**的目标。目标即使在检查后出现也不会被覆盖；失败仅清理本次拥有的 staging。

目录原子发布是提交点。提交前取消不发布半份目录；提交后取消或报告失败保留完整目标。普通 stdout 无原子提交保证，出错时可能只收到部分内容。目录崩溃持久性仍取决于文件系统，不能把原子可见性当成断电持久性。自动化应检查退出码和 `publication`，详见 [报告](docs/reports.md)。

默认候选数、原始读取、单文件、模板及 MCP 缓存等限额分别约束对应阶段，不是完整进程内存或全局 I/O 配额。
