我构建了一个开源 CLI,防止你的 AI 终端泄露机密
Source: Dev.to
我爱 AI 编码工具。我每天都在使用它们。
但有件事没有任何构建它们的人在意:你发送的所有内容都会直接送到模型,未经过滤。
- 你的命令历史
- 你的环境变量
- 凭证、令牌、错误日志中出现的客户数据
这些都没有被编辑。没有审计轨迹。你只能相信没有敏感信息泄露到提示中。
这不是一个好的安全姿态。所以我构建了一个东西。
AI 驱动的开发工作流中的潜在风险
AI 终端助手在提升生产力方面非常强大。我经常使用其中一种。它们大多数的工作方式如下:
Your full prompt → LLM API → response back
没有过滤。没有编辑。没有审计记录。
这意味着如果你的提示上下文中包含:
- 来自命令历史的凭证
- 错误日志中的个人身份信息(PII)
- 环境中的内部主机名
- 剪贴板中的令牌
……所有这些都会发送给模型。
用于副项目?谁在乎。但一旦你在处理生产系统、客户数据或专有代码时,这就会成为真正的合规问题——尤其是在受监管行业或面向企业客户时。
So I built: Bast CLI
Bast 是一个免费、开源的 AI 终端助手,在任何内容到达大语言模型(LLM)之前都会通过安全网关进行路由。
它具备你对 AI CLI 的所有期待——自然语言转 Shell 命令、命令解释、错误恢复——并且加入了安全层,能够:
- 自动脱敏个人身份信息(电子邮件、API 密钥、凭证、令牌),在发送给模型之前进行过滤
- 阻止提示注入和越狱尝试
- 完整日志记录,让你对发送的内容和时间拥有全方位可观测性
它使用 Go 编写,采用 Bubble Tea 实现 TUI,遵循 MIT 许可证。
See it in action
Walkthrough
![]()
Bastio AI Security | BAST CLI Tool — Screen Studio
Created and shared with Screen Studio
![]()
Install (macOS / Linux)
curl -fsSL https://raw.githubusercontent.com/bastio-ai/bast/main/scripts/install.sh | sh
bast init
Generate commands from plain English
$ bast run
> find all go files modified in the last week
find . -name "*.go" -mtime -7
[⏎ Run] [e Edit] [c Copy] [? Explain] [Esc Exit]
Understand a command before you run it
$ bast explain "tar -xzvf archive.tar.gz"
Extracts a gzip‑compressed tar archive. The flags:
x = extract,
z = decompress gzip,
v = verbose output,
f = specify filename.
Fix a failed command
$ git push origin feature/auth
! [rejected] feature/auth -> feature/auth (non‑fast‑forward)
$ bast fix
The remote branch has commits you don't have locally.
Suggested fix:
git pull --rebase origin feature/auth
超越安全层
Bast 不仅是一个安全包装器——它是一个功能完整的 AI 终端助手。亮点:
危险命令检测
在执行 rm -rf、git push --force、dd 等破坏性操作前自动发出警告。包含受保护的 git 操作完整列表(强制推送、硬重置、分支删除、历史重写)。
Git 感知
了解当前分支、已暂存的更改、合并/变基状态以及最近的提交。当你让它“用好的信息提交我的更改”时,它会读取你的 diff 并生成有意义的提交信息。
代理模式
输入 /agent 进行多步骤任务。Bast 可以执行命令、读取文件,并迭代完成复杂工作流:
$ bast run
> /agent find all TODO comments in go files and summarize them
Tool Calls:
run_command {"command": "grep -r 'TODO' --include='*.go' ."}
Found 2 TODO comments in the codebase:
1. internal/ai/anthropic.go — Add streaming support for responses
2. internal/tools/loader.go — Validate script permissions before execution
Shell 集成
在配置中添加 eval "$(bast hook zsh)",即可使用 Ctrl+A 启动 Bast,Ctrl+E 解释当前正在输入的命令。
自定义插件
使用位于 ~/.config/bast/tools/ 的简单 YAML 清单,扩展 Bast 以加入自己的工具。非常适合部署流水线、数据库操作或任何你想让 AI 感知的工作流。
网关(以及如何跳过它)
Bastio 安全网关每月免费提供 100 000 次请求——无需信用卡。它处理 PII 脱敏、注入阻断和可观测性。
如果您更愿意直接连接 Anthropic API:
export ANTHROPIC_API_KEY=sk-ant-...
export BAST_GATEWAY=direct
您将失去安全功能,但其他一切仍然可用。
为什么开源?
如果一个工具声称能够保护你的数据,你应该能够阅读它的代码。闭源的安全工具本身就是一种矛盾。
整个 CLI 都托管在 GitHub,采用 MIT 许可证。阅读它,fork 它,尝试破坏它,改进它。
接下来
- 在 Anthropic 之外提供更多 LLM 提供商支持
- 团队仪表盘和策略控制
- 扩展的 PII 检测模式
- IDE 集成
我很想听到你的反馈
这是我在 Dev.to 的第一篇文章,bast 是一个全新的项目。如果你在包含敏感数据的环境中使用 AI 编码工具,我真的想了解一下你的做法:
- 你是否在生产代码库上运行 AI 助手?
- 你的团队是否有关于向大语言模型(LLM)发送内容的政策?
- 你会使用类似的工具吗,还是觉得它有点大材小用?
如果你觉得这个项目有趣,请给仓库加星;如果出现问题,请提交 issue,并告诉我我遗漏了什么。
GitHub: github.com/bastio-ai/bast
Website: bastio.com