开发与工程 sandboxnetwork-isolationfilesystem-restrictionsseccomplandlockbubblewrapcoding-agent-securitycli

Fence

轻量、免容器的命令沙箱:默认封锁网络、按规则限制文件系统,为半可信代码与 AI 编码代理提供纵深防御。

FollowAgents 评估 · FARS-2.1
谨慎使用
68/ 100 五分制 3.4 / 5
1 2 3 4 5 6
1信任安全16 / 29 · 2.8/5

证据显示默认拒绝网络、可配置文件系统与命令拒绝规则、SSH 过滤,符合最小权限方向(least_privilege 2),但未见执行前确认机制(user_confirmation 1)、无敏感数据处理说明(1)、无回滚/恢复路径(1)。配置可视化(fence config show、-m 监控、--fence-log-file)提升数据流透明度(2)。依赖经 go.mod 锁定且范围小(2)。外部副作用有 deny 规则约束(2)。归属明确:Apache-2.0、版权 Tusk AI、致谢 Anthropic sandbox-runtime(2)。

2可靠稳定9 / 14 · 3.2/5

README 与 CI 工作流一致:CI 在 Linux(bwrap/socat/subuid)与 macOS(sandbox-exec)上验证沙箱依赖并运行构建、lint、测试与冒烟测试(dependency_availability 2、self_consistency 2)。失败示例(403 Forbidden、命令被阻止)与监控模式显示具体报错行为(2),但均为文档断言,未执行验证。

3适用触发14 / 18 · 3.9/5

目标场景明确:半可信代码、CI、AI 编码代理,并列出多个兼容代理(3)。配置继承、模板、schema 支持定制(2)。明确跨平台 macOS/Linux(Nix 含 WSL),但仅这两种环境,Windows 原生不支持(environment_fit 2)。能力边界在配置层面清晰,但沙箱逃逸边界未在本证据中展开(2)。

4规范维护14 / 18 · 3.9/5

文档结构清晰:README、docs/、schema、架构文档、在线文档(information_architecture 3)。安装说明覆盖多渠道且含仓库迁移指引(install_notes 3)。示例丰富(examples_and_faq 3)。LICENSE 完整 Apache-2.0(3)。SECURITY.md 定义 90 天披露与联系方式(2)。扣分点:无 CHANGELOG,版本仅靠 Release 徽章(versioning_changelog 1);已知限制/安全模型仅在链接文档中,本证据内未见实质局限说明(known_limitations 1);仓库从 Use-Tusk/fence 迁移说明名称曾不稳定(naming_stability 2)。

5有效结果10 / 13 · 3.8/5

config show 将链路信息到 stderr、JSON 到 stdout 便于管道(output_usability 2)。作为无容器轻量沙箱并兼容多代理,边际价值明显(marginal_value 3)。成本收益合理但性能数据未在本证据中给出(cost_benefit 2)。

6证据核验5 / 8 · 3.1/5

README 声称的依赖、平台与测试在 CI 工作流中得到部分相互印证(cross_source_corroboration 2);断言可通过 config show、-m 等命令溯源(claim_traceability 2);证据为静态文档,事实与推断可区分但未执行(fact_inference_separation 2)。静态审查仅凭 README/工作流/LICENSE/go.mod/SECURITY,缺少源码与 docs 内容本身,整体置信度为 low。

证据充分度: 评估于 2026年9月7日 审查版本 3e0eefe82821
使用前请注意
  • 未验证发布者身份,且曾发生仓库迁移(Use-Tusk → fencesandbox),安装渠道需按 README 迁移指引切换,避免旧 tap/go install 路径。
  • 沙箱声明未经执行验证:sandbox-exec 在现代 macOS 已被弃用,请自行在目标系统验证隔离强度;bwrap 需 setuid/用户命名空间配置,配置不当会削弱隔离。
  • 无回滚/恢复与执行前确认机制的证据;对高破坏性命令的防护依赖 deny 规则的完备性,请审计 fence.c 并用 config show 检查生效配置。
  • 无 CHANGELOG,版本演进不可静态追溯;升级前请查阅 Release 说明。
  • 敏感数据处理、沙箱逃逸边界等仅在链接文档中,本证据无法证实,请阅读 docs/security-model.md 后再用于高风险工作负载。
评估证据 [1][2][3][4][5][6]
查看完整评分方法 →

这个 Agent 能做什么,适合哪些场景?

Fence 是一个命令行沙箱工具,将任意命令包裹在受控环境中运行:默认阻断全部对外网络访问,并依据可配置规则限制文件系统读写。它基于 macOS 的 sandbox-exec 与 Linux 的 bubblewrap、seccomp、Landlock 等机制实现跨平台隔离,无需容器即可工作。除命令沙箱外,它还充当 CLI 编码代理(如 Claude Code、Codex、Gemini CLI 等)的权限管理器,可通过配置文件允许特定域名、放行写入路径、禁止危险命令(如 rm -rf /、git push)以及过滤 SSH 命令。配置采用 fence.c/fence.(支持 JSONC 注释与继承 extends),支持内置模板、实时违规监控(-m)与 Claude Code 权限导入。项目以 Apache-2.0 协议开源,既可作为 CLI 使用,也可作为 Go 包集成,官方文档位于 fencesandbox.com/docs。

Fence 拦截并包裹用户命令(如 fence curl https://example.com、fence -t code -- claude):网络层面默认全部封锁(返回 403 Forbidden),仅在配置的 allowedDomains 中放行指定域名;文件系统层面按 allowWrite 等规则控制读写路径;命令层面通过 command.deny 阻止 rm -rf /、git push、npm publish 等危险操作,并支持 SSH 主机与命令过滤。配置从当前/父目录的 fence.c 或 ~/.config/fence/fence.c 读取,支持 extends 继承模板(如 code)、@base 仓库级覆盖,fence config show 可输出合并后的完整配置,fence config init 生成起步配置,fence import --claude --save 可导入 Claude Code 权限。监控模式(-m)实时记录被拦截的请求,配合 --fence-log-file 输出日志;Linux 上可选 bpftrace 提供文件系统违规可见性。

  1. 开发者在运行 npm install、构建脚本等半可信包安装时,想默认断网并只放行 npm/pypi 等域名,可用 -t code 模板。
  2. 团队在 CI 任务或克隆的不熟悉仓库上执行代码,希望限制文件写入范围并封禁 git push 等危险命令。
  3. 使用 Claude Code、Codex、Gemini CLI 等 AI 编码代理的用户,想为代理的网络、文件系统和命令行为加一层权限管理(fence -t code -- claude)。
  4. 已有 Claude Code 权限配置的团队,可用 fence import --claude --save 快速迁移为 Fence 配置。
  5. 运维人员需要审计沙箱拦截情况,可用 fence -m --fence-log-file /tmp/fence.log 记录违规日志。
  6. 企业内网环境需要访问私有域名(如 private.company.com),可在配置的 allowedDomains 中精确放行。

这个 Agent 有哪些优点和局限?

优点
  • 免容器:通过 macOS sandbox-exec 与 Linux bubblewrap/Landlock/seccomp 实现隔离,启动开销和部署复杂度远低于容器方案。
  • 默认拒绝网络并支持域名白名单、路径级文件系统权限与危险命令封禁,形成多层防御,而非单一开关。
  • 内置模板与配置继承(extends、@base 覆盖),并可通过 fence config show 输出可管道到 jq 的合并配置,便于审计与团队共享。
  • 对主流编码代理(Claude Code、Codex、Gemini CLI 等)有明确支持与 hooks 文档,且可从 Claude Code 导入权限。
局限
  • 平台机制分裂:macOS 依赖 sandbox-exec,Linux 依赖 bubblewrap 与 socat,跨平台行为与额外依赖不一致。
  • Windows 原生不受支持,Nix 文档仅提及通过 WSL 运行。
  • 沙箱逃逸防护的强度缺乏独立证明,README 仅声称默认阻断,需阅读安全模型文档评估自身风险。
  • 作为较新的重命名项目(从 Use-Tusk/fence 迁移),社区规模与长期维护状况需要自行评估。

如何安装或部署这个 Agent?

macOS/Linux 一键脚本:curl -fsSL https://cli.fencesandbox.com/install.sh | sh。Homebrew(macOS):brew tap fencesandbox/tap && brew install fencesandbox/tap/fence。Nix:nix run nixpkgs#fence -- --help。Go 安装:go install github.com/fencesandbox/fence/cmd/fence@latest。源码构建:git clone https://github.com/fencesandbox/fence && cd fence && go build -o fence ./cmd/fence。注意:项目已从 github.com/Use-Tusk/fence 迁移至 fencesandbox/fence,旧 Tusk tap 或旧 go install 路径需按 README 迁移。Linux 额外依赖:bubblewrap(必需)、socat(必需)、bpftrace(可选)。

如何使用这个 Agent?

基本用法:fence curl https://example.com(默认断网,返回 403);fence -c "echo hello && ls"(shell 展开);fence -d <命令>(调试日志);fence -t code -- claude(以 code 模板运行 Claude Code);fence -m npm install(监控违规)。需要向被包裹命令传参时用 -- 分隔,如 fence -- claude --dangerously-skip-permissions。配置:项目目录或 ~/.config/fence/ 下创建 fence.c,例如 {"extends":"code","network":{"allowedDomains":["private.company.com"]},"filesystem":{"allowWrite":["."]},"command":{"deny":["git push","npm publish"]}};用 fence config show 检查生效配置,fence config init 创建起步配置。

对比同类 Agent

用同一套 FARS 评审,横向比较这个 Agent 所属的短名单。

相关 Agents