
CodeWhale网络策略如何为AI Agent的联网行为设白名单【免费下载链接】CodeWhaleOpen-source coding agent for your terminal, built in Rust and on a journey of continuous community improvement. Issues and PRs welcome.项目地址: https://gitcode.com/GitHub_Trending/de/CodeWhaleCodeWhale 是一个用 Rust 编写的开源终端 AI 编码 Agent。当它的fetch_url、web_search等工具需要联网时内置的**网络策略Network Policy**让你按域名设置白名单 / 黑名单每次出站请求都可审计被拦截的请求会明确告知原因。这篇指南帮你 3 步完成配置。一、为什么 AI Agent 联网需要白名单AI Agent 会根据模型给出的 URL 主动发起网络请求这带来三类风险提示注入网页内容诱导 Agent 把请求发往陌生域名造成信息外泄SSRF 攻击让 Agent 抓取169.254.169.254云元数据或127.0.0.1本地服务不可预期的流量Agent 在错误域名上反复重试浪费配额。CodeWhale 用策略 审计两层机制回应这些风险策略层按域名host给出Allow放行/Deny拒绝/Prompt弹窗征求同意三种决策且deny 优先——同一域名同时出现在 allow 和 deny 中时一律拒绝审计层每次网络调用在~/.codewhale/audit.log追加一行记录方便事后复盘Agent 到底访问过哪些站。二、3 步快速上手配置网络白名单说明[network]配置段是按需启用的。不写该段时不强制执行策略兼容旧版本行为一旦写入即全面生效。第 1 步打开配置文件加入 [network] 段配置文件位于~/.codewhale/config.toml各选项参考 config.example.toml 第 927–951 行的注释模板[network] default prompt # 未匹配域名的默认动作prompt allow [api.deepseek.com, github.com, .githubusercontent.com] deny [] # 始终拒绝的域名 audit true # 每次调用写一行审计日志三种default值适合不同信任场景default适合人群效果prompt推荐普通用户陌生域名先询问可本次会话放行或永久加入白名单deny离线/高安全场景白名单之外的请求一律拒绝fail closedallow完全信任网络黑名单之外的请求全部放行第 2 步用 /network 命令随时增删白名单不想手动改文件在 TUI 里直接输入命令即可实现见crates/tui/src/commands/groups/utility/network.rs/network list # 查看当前策略 /network allow github.com # 加入白名单支持直接粘贴完整 URL /network deny tracker.example.com # 加入黑名单 /network remove github.com # 移除条目 /network default deny # 切换默认动作命令会自动把 URL 归一化为域名https://github.com/xxx→github.com并把结果持久化到配置文件重启不丢失。第 3 步验证生效让 Agent 抓一个白名单外的页面若返回如下提示说明策略已工作network call to xxx requires approval; re-run after /network allow xxx三、域名匹配规则速查表匹配忽略大小写、自动去除末尾的点。通配写法.example.com与*.example.com等价只匹配子域名、不匹配主域本身配置条目api.example.coma.b.example.comexample.comapi.example.com✅❌❌.example.com✅✅❌example.com❌❌✅想让主域和所有子域都放行需要两条都写[example.com, .example.com]。核心判定逻辑含 deny 优先、会话级缓存位于crates/tui/src/network_policy.rs。四、审计日志谁在什么时候访问了什么开启audit true默认后每次网络调用追加一行纯文本记录2026-08-28T05:31:2208:00 network api.deepseek.com fetch_url Allow 2026-08-28T05:32:1008:00 network evil.example.com web_search Deny决策标签含义一目了然标签含义Allow/Deny由白名单 / 黑名单直接决定Prompt-Approved/Prompt-Denied弹窗中你的选择仅本次会话生效TrustedProxyFakeIp-Allow通过受信任代理的 fake-IP 放行日志文件固定在~/.codewhale/audit.logtail -f即可实时观察 Agent 的联网行为。五、白名单之上还有一道 SSRF 防线即使某个域名被你加入白名单CodeWhale 仍会在 DNS 解析后做二次校验见crates/tui/src/tools/web/guard.rs私网 / 回环 / 链路本地 / 云元数据 IP 一律拦截——防止域名合法但解析到内网的重绑定rebinding攻击DNS 结果会被钉住HTTP 客户端绑定到已验证的 IP避免校验通过后地址被偷换环境代理被禁用防止请求绕过本进程经代理二次解析使用 fake-IP 模式代理如 TUN 透明代理的用户可通过[network]的proxyproxy_fake_ip_cidrs仅限198.18.0.0/15段精确放行占位地址真实内网地址仍不可绕过。影响范围fetch_url、web_search等联网工具与 MCP HTTP 传输受策略约束直连 LLM 的 API 调用和 stdio 类型的 MCP 服务器不受影响。另外/skill install也受[network]门禁安装前确保github.com、raw.githubusercontent.com可达。六、推荐实践清单️ 新手默认用default prompt用永久放行选项逐步养成白名单 把广告/统计域名放进deny——deny 优先能压过任何宽泛的 allow 定期tail ~/.codewhale/audit.log复盘 Agent 的访问足迹 白名单只列你确认需要的域名子域用.域通配主域单独列出。相关文件索引策略核心crates/tui/src/network_policy.rs· SSRF 守卫crates/tui/src/tools/web/guard.rs·/network命令crates/tui/src/commands/groups/utility/network.rs· 配置模板config.example.toml· 配置文档docs/CONFIGURATION.md【免费下载链接】CodeWhaleOpen-source coding agent for your terminal, built in Rust and on a journey of continuous community improvement. Issues and PRs welcome.项目地址: https://gitcode.com/GitHub_Trending/de/CodeWhale创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考