跳到正文
发现
命令行工具开发者工具

cplt:AI 编程代理沙箱

用内核级隔离把 Copilot CLI、Claude Code 等 AI 编程代理关进沙箱,防止其窃取凭据或改动主干。

admin
发布于 2026-10-29 · 更新于 2026-11-02
浏览
11
访问
0
下载
0
版本
v2026.10.31-194043-5a954b6
平台
macOS、Linux
该作品还没有经过官方审核。访问演示、下载或复制命令前,请自行确认来源可信。

详细介绍

项目简介

cplt 是一个为 AI 编程代理提供内核级强制隔离的沙箱工具。它包裹 GitHub Copilot CLI、OpenCode、Gemini CLI、Antigravity CLI、Pi、Claude Code、goose、DeepSeek Harness 或任意 shell,让代理可以写代码,但无法窃取凭据、推送到 main、合并 PR 或外泄密钥。

隔离由操作系统内核执行,不依赖 Docker 或虚拟机,只有一个二进制文件,可直接在受管控的笔记本上运行。

主要功能

  • 平台级沙箱后端:macOS 使用 Apple Seatbelt/SBPL(通过 sandbox-exec);Linux 使用 Landlock LSM + seccomp-BPF,可选 Bubblewrap 命名空间隔离(内核 5.13+,6.7+ 支持完整网络过滤)。
  • 策略随仓库走:每个仓库的 .cplt.toml 策略提交进版本库,可审计、不易被篡改;首次运行需开发者确认信任。
  • 默认拒绝敏感资源:~/.ssh、~/.gnupg、~/.aws、~/.azure、~/.kube、~/.docker、~/.netrc、~/.pypirc、~/.vault-token、~/.config/gcloud 等默认在内核层被拦截;项目内的 .env*、.pem、.key、id_rsa 也默认禁止读写删除。
  • git / gh 命令拦截:阻止推送到默认分支、强制推送、合并、发布,feature 分支保持可用;默认两者均为阻断模式,可切换为 warn 观察模式。
  • 出站网络过滤:默认只放行 443 端口,其余端口阻断,可配合 --with-proxy 做域名过滤与审计日志。
  • 防持久化与写后执行:阻止写入 .git/hooks、.git/config、~/.copilot/pkg,阻止从 /tmp、/var/folders、~/Library/Caches 执行程序,阻止篡改 PATH 上的全局 bin/shim 目录。
  • 环境变量清理:仅放行安全白名单变量,生命周期脚本被阻止,可用 --pass-env 单独放行。

安装与使用

macOS 可用 Homebrew,也可用 mise,或从 release 下载对应平台压缩包:

brew install navikt/tap/cplt
mise use -g 'github:navikt/[email protected]'

Debian / Ubuntu 可安装 release 中的 .deb 包。

快速开始:

cplt --shell-install        # 让 copilot 默认在沙箱中运行
cplt doctor                 # 检查环境
cplt -- -p "fix the tests"  # 在沙箱里运行 Copilot

切换代理或直接沙箱化命令:

cplt --agent opencode
cplt --agent shell
cplt exec -- npm install

团队落地:

cplt init --write
cplt trust accept --all
cplt config set git_guard.mode warn

注意事项

  • Windows 无原生支持:没有 Windows 沙箱后端,需在 WSL2 中运行,此时等同于普通 Linux 安装。
  • 部分操作被有意阻断:沙箱内无法执行 bun install -g、deno install、pnpm add -g、mise install 等全局工具安装;提交与标签签名默认关闭;~/.npmrc 默认不可读。可用 --allow-read、--allow-env-files、--allow-port、--allow-cache-exec 等开关按需放开。
  • Linux 保护弱于 macOS:Landlock 无法拒绝已允许目录内的子路径,.git/config、.gitmodules、localhost 访问、SSH agent 等场景存在限制,详见官方安全文档。
  • 已知风险:.vscode/tasks.json 与 launch.json 默认可修改,属于 IDE 信任边界。
  • 采用 MIT 许可证。

本作品整理自 GitHub 开源项目 navikt/cplt,原作者 @navikt,许可证 MIT。中文介绍由 AI 根据项目 README 整理,以原仓库为准。

更新记录

  1. v2026.10.31-194043-5a954b6当前版本

    cplt 2026.10.31-194043-5a954b6

  2. v2026.10.31-181434-5e06c82

    cplt 2026.10.31-181434-5e06c82

  3. v2026.10.30-110556-eab7fb6

    新增 `config unset` 命令;修复沙箱内 pnpm 的处理,包括遮蔽全局 pnpm 二进制、解析相对的 cmd-shim 目标;修复发布流程被跳过任务取消的问题。

评论