安全边界
Coding Tools MCP 是编码工具服务器。它提供工作区路径检查、命令安全门禁、可选文件系统隔离、远程 HTTP 鉴权和环境过滤,但它本身不是完整安全沙箱。工作区边界
直接文件工具会在配置的工作区根目录下解析路径。启动时应选择能满足任务的最小目录:命令边界
exec_command 能运行当前权限模式允许的本地命令。应把它视为在配置工作区和服务进程环境内执行代码。
| 模式 | 边界 |
|---|---|
safe | 对网络特征命令、shell 展开、内联脚本、敏感环境和宽泛临时目录写入加门禁。Landlock 可用时启用。 |
trusted | 允许常见开发流程,同时保留工作区路径策略、敏感环境过滤和可用时的 Landlock。 |
dangerous | 关闭命令权限门禁和 Landlock。只应在外层沙箱中使用。 |
Landlock 依赖宿主
Linux 上会在可用时使用 Landlock。如果内核或宿主配置不支持,服务会报告命令只在策略检查下运行。这个警告意味着不可信命令需要依赖外层容器、VM 或其他沙箱。鉴权边界
HTTP loopback 可以无鉴权。非 loopback 绑定需要 Bearer auth、OAuth,或显式CODING_TOOLS_MCP_AUTH_MODE=noauth。
远程访问建议:
- 使用 Bearer auth 或 OAuth。
- 放在 TLS 后面。
- 不把 token 和 OAuth secret 写入日志。
- 通过代理或公开 tunnel 暴露 OAuth 时设置
CODING_TOOLS_MCP_SERVER_URL。 - 除非外层可信层已鉴权,否则不要使用 no-auth 远程模式。
环境边界
在safe 和 trusted 中,看起来像 secret 的环境变量名和值会从命令执行环境中被过滤。动态库 preload、语言启动钩子等风险变量也会被视为不安全。
除非部署和权限模式明确接受该风险,否则不要通过 exec_command.env 传入 API key、私钥、token 或密码。
Tool profile 边界
--tool-profile read-only 会减少对客户端暴露的工具,但不是完整安全审计系统。它隐藏修改型工具,不代表服务在所有配置下都不可变。
compat-readonly-all 是兼容模式,可能把可修改本地状态的工具标注为只读,因此不能把它当作安全控制。
推荐部署姿态
- 本地单用户编辑器接入:stdio 或 loopback HTTP,先使用
safe。 - 可信本地开发自动化:stdio 或 loopback HTTP,需要网络或 shell 特性时使用
trusted。 - 远程工作区:HTTP 加 Bearer auth 或 OAuth,TLS,窄工作区,容器或 VM 隔离。
- 高风险自动化:先建立外层沙箱,再选择最小可用 profile 和权限模式。