关于 s-gw
s-gw 是面向编码 Agent 的本地凭据管控工具,通过审批受限操作并在本机注入凭据,避免原始密钥进入模型上下文或工具输出。它提供命令行、管理界面和审计记录。
主要功能
- 01本地审批受限操作
- 02按操作范围注入凭据
- 03敏感输出扫描与脱敏
- 04记录策略和执行审计
- 05配置多个 Agent 客户端
适用场景
- 01授权 Agent 执行需凭据的命令
- 02审核凭据使用请求
- 03排查凭据操作的审计记录
MCP 相关
提供 stdio MCP 服务,供 Agent 发现凭据句柄并创建访问请求。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
10收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| path | string | 是 | |
| persist | boolean | 否 |
详细介绍
s-gw
为编码 Agent 提供本地凭据控制。
在本地批准受限操作。避免原始凭据进入模型上下文和工具输出。
演示 · 下载 · 快速开始 · 文档 · 安全 · 参与贡献
不要再把原始凭据交给编码 Agent。s-gw 为 Agent 提供有类型的句柄,请求你批准受限的本地操作,在你计算机上受约束的进程中解析凭据,并返回经过清理的输出,而不是机密值。
重要
s-gw 仍处于早期预览阶段。存储格式和接口可能会发生变化,Windows 和 Linux 桌面支持仍处于实验阶段,且项目尚未完成独立安全审计。目前不要将其视为终端安全或强化型企业机密平台的替代品。
本仓库中的 TypeScript 代理、客户端和文档均采用 Apache-2.0 许可证。分发的软件包还包含专有的编译型 Rust 执行核心,其源代码单独维护。
简要说明
- Agent 可见:
s-gw:credential:prod-readonly - 你批准: Agent、命令、句柄、环境绑定、工作目录和目标
- s-gw 执行: 在本地运行命令,并仅将凭据注入该子进程
- Agent 收到: 经清理的输出、审计证据,且不包含原始机密
如果 s-gw 对你的 Agent 工作流有所帮助,请为项目点星。这能让更多开发者发现这个预览项目。
实际演示
本地控制台会展示审批队列、凭据清单、策略状态、使用流程和活动历史,同时不会暴露机密值。

公开演示:s-gw.com。
功能
| 管控 | 审批 | 执行 | 审计 |
|---|---|---|---|
| 将机密转换为有类型的本地句柄,供 Agent 安全引用。 | 授予访问权限前,检查发起请求的 Agent、句柄、命令、环境绑定、工作目录和目标。 | 仅将凭据注入同一台计算机上经批准的子进程。 | 记录请求、审批、执行、策略和目标证据,而不存储返回的原始机密。 |
团队为何使用它
- **本地保管:**原始值保留在 macOS Keychain、Linux Secret Service、Windows Credential Manager、1Password 或加密的本地账本中。
- **按操作授权:**授权绑定到 Agent、句柄、命令、环境变量、工作目录、目标、审批模式和可选的时间范围。
- **实用句柄:**Agent 可以使用稳定的句柄名称请求执行实际工作,而无需看到密钥、密码、令牌或 SSH 凭据。
- **输出清理:**命令输出返回给 Agent 前会经过扫描,将检测到的凭据值替换为句柄。
- **适配 Agent 的设置:**Codex、Claude Code、Cursor、OpenCode、Gemini CLI、GitHub Copilot、VS Code 和其他 MCP 客户端会获得特定配置。
- **本地操作界面:**原生桌面应用、托盘或菜单辅助工具、命令行和 Web 控制台可显示审批、凭据清单、策略、使用流程、活动和审计历史。
工作原理
flowchart LR
A["Coding agent"] -->|"Handle + action request"| G["s-gw local gateway"]
G --> U["Local approval"]
U --> R["Constrained runner"]
K[("Keychain / Credential Manager / encrypted store")] --> R
R -->|"Sanitized output"| G
G --> A
Agent 无需获取解锁密码或原始凭据。审批仅针对所请求的操作,而不会授予对存储区的常规访问权限。
核心界面
| 界面 | 用途 |
|---|---|
s-gw CLI | 设置、凭据登记、审批、策略、Agent 代码片段、防护模式和诊断。 |
s-gw-mcp / s-gw mcp | 面向 Agent 的句柄发现和请求创建的 Stdio MCP 服务。 |
| 原生 macOS 应用 | 审批队列、凭据清单、策略规则、使用流程、活动和审计审查。 |
| Windows 和 Linux 桌面应用 | 可安装的预览版应用,包含原生窗口、托盘控件和捆绑的本地运行时。 |
| 菜单栏辅助工具 | 快速查看待处理审批和本地守护进程状态。 |
| 本地 Web 控制台 | 绑定到 127.0.0.1 的浏览器备用界面;桌面应用无法运行时仍可使用。 |
| 防护模式 | 启动 Agent 时,将类似凭据的环境变量替换为 s-gw 句柄。 |
快速开始
推荐在 macOS、Windows 10/11 和 Linux 上通过公开的 npm 包安装。安装 Node.js 20 或更高版本,然后运行:
npm install -g @s-gw/s-gw
s-gw setup
s-gw status
在 Windows 上,在 PowerShell 中运行相同的命令。Windows 支持仍处于预览阶段:npm 包使用 TypeScript 执行路径,并包含 PowerShell 客户端、托盘辅助工具和本地 Web 控制台。
在 Linux 上,请先安装 secret-tool(在 Ubuntu/Debian 上运行 sudo apt install libsecret-tools)。已解锁的桌面 Secret Service 是常用的持久化解锁提供程序;s-gw setup 还会为图形会话安装并启动一个用户级 systemd --user 控制台服务。没有 Secret Service 的无头主机可以通过显式提供 SGW_MASTER_PASSPHRASE 并运行 s-gw setup --no-service --no-open-app 来使用,但 s-gw 绝不会将该值复制到单元文件或后台服务环境中。
Windows x64 和 Linux x64 也提供可安装的桌面应用版本。Rust 应用直接在原生窗口中绘制管理界面,不会嵌入浏览器、WebView 或 localhost 页面。它捆绑了固定版本的 Node 运行时和 s-gw CLI,因此安装后的应用无需主机安装 Node.js 或 npm。安装原生可执行文件后,s-gw app open 会使用该程序。使用 s-gw app open --browser 可显式启动并打开独立的环回浏览器备用界面。
这些 Windows NSIS 和 Linux Debian 安装包目前是未签名的 CI 预览版,并非受支持的公开发行版下载。Windows 无需 WebView2。Linux 需要图形会话和已解锁的 Secret Service 密钥环;Debian 安装包会声明 GTK 3、AppIndicator、libxdo 和 libsecret-tools 运行时依赖项。有关构建和安装详情,请参阅部署和打包。
对于 Apple Silicon Mac 桌面版,GitHub Releases 还提供独立的 s-gw.dmg。将 s-gw.app 拖到 Applications,然后打开并完成设置。此应用包含自己的 Node 运行时、CLI、MCP 服务、本机辅助程序和菜单栏辅助程序;主机上无需安装 Node.js 或 npm。只有将应用放在 /Applications 或 ~/Applications 中才能进行设置。
未签名的 DMG 需要绕过 Gatekeeper。如果不想使用该绕过方式,请改用上面的 npm 安装方式。
公开源代码会构建 TypeScript 兼容路径,以及采用 Rust 原生渲染的 Windows/Linux 桌面应用。构建原生 macOS 界面还需要 Swift 工具链。Windows 和 Linux 桌面版需要 Rust 及其常用的原生图形和托盘开发库。维护者的发布构建还需要访问私有 Rust 核心代码库。
Apple Silicon Mac DMG 是一种独立的桌面替代方案。已发布的 macOS DMG 均经过 Developer ID 签名和公证,或明确标注为未签名;未签名版本需要绕过 Gatekeeper,但保留标准发布标签和更新路径。本地 npm run build:installers 输出采用临时签名,用于本地验证。npm 包是主要安装方式,其中包含适用于 Apple Silicon Mac 的原生应用、菜单辅助程序、Keychain 辅助程序、仅显示元数据的 Keychain 检查器和 Rust 核心。在未打包对应原生核心的 Linux 和 Windows 系统上,使用 TypeScript 执行路径。目前,Intel Mac 必须从源代码构建原生 Keychain 和桌面界面;启动前会拒绝使用已打包的 arm64 专用辅助程序。
git clone https://github.com/sgateway/s-gw.git
cd s-gw
npm ci
npm run build
npm link
s-gw setup
s-gw status
s-gw setup 会生成本地解锁材料,将其存储在操作系统凭据库中,初始化加密账本,启动当前平台上可用的本地 UI 界面,并安全地连接检测到的受支持 Agent。独立的 macOS 应用和 Windows/Linux 桌面预览版会直接运行其捆绑的运行时;npm 安装会将精简版 macOS 应用复制到 /Applications,必要时改用 ~/Applications。设置过程会备份现有 Agent 配置、保留无关设置、在支持的平台上安装打包的 s-gw 技能,并报告各 Agent 的冲突。使用 --no-agents 可跳过 Agent 注册。
从终端添加凭据,不要将其值放入聊天内容或进程参数中:
printf '%s' "$MY_API_TOKEN" | s-gw secret add-keychain \
--name demo-token \
--type api-token \
--value-stdin \
--inject-env API_TOKEN \
--allow-command "$(command -v printenv)"
然后检查非机密的句柄元数据:
s-gw secret list
端到端信任循环将引导你完成一次临时请求、本地审批、执行和输出清理,全程不会接触真实凭据。
试用信任循环
使用临时的本地令牌体验完整流程:
printf '%s' 'demo-secret-value' | s-gw secret add-keychain \
--name demo-printenv-token \
--type api-token \
--value-stdin \
--inject-env DEMO_TOKEN \
--allow-command "$(command -v printenv)"
s-gw request env-command <returned-handle> \
--command "$(command -v printenv)" \
--inject-env DEMO_TOKEN
s-gw approve <request-id>
s-gw execute <request-id>
执行输出应显示句柄令牌,而不是 demo-secret-value。
Agent 集成
列出已知的 Agent 配置,并为一个客户端生成配置:
s-gw agent list
s-gw agent mcp-snippet codex
s-gw agent mcp-snippet claude-code
s-gw agent mcp-snippet opencode
查看或管理检测到的连接:
s-gw agent status
s-gw agent install codex --dry-run
s-gw agent install codex
s-gw agent uninstall codex
手动配置以及无法安全合并的配置格式仍会使用生成的代码片段。npm 安装本身绝不会修改 Agent 配置。
在 macOS、Windows 和 Linux 上,s-gw setup 可以安全管理检测到的 Claude Code、Codex、Cursor、Gemini CLI、GitHub Copilot CLI、OpenCode 和默认配置的 VS Code 安装。在 Windows 上,它会通过 node.exe 启动打包的 MCP 服务,而不是使用 npm .cmd 垫片。
对于 CLI Agent,防护模式可在 Agent 启动前,将启动环境中看起来像凭据的值替换为 s-gw 句柄:
s-gw run codex --dry-run -- -v
s-gw run codex -- --ask-for-approval never
MCP 注册不会拦截每条提示词、文件读取、Shell 命令或环境变量。请参阅 Agent 集成和 Agent 配置矩阵,了解支持的路径和当前限制。
示例请求流程
- Agent 看到
s-gw:credential:prod-readonly,并请求运行aws sts get-caller-identity。 - s-gw 会创建一个待处理请求,其中包含 Agent 名称、命令、句柄、环境绑定、工作目录、目标和策略结果。
- 你可以批准一次、在指定时间段内批准、在整个登录会话期间批准,或拒绝。
- s-gw 会启动获批的本地进程,并将凭据注入请求的环境变量。
- s-gw 会扫描进程输出,然后再将其返回给 Agent。
模型无需接收原始访问密钥即可完成任务。
平台状态
| 平台 | 状态 | 凭据存储 | 用户界面 |
|---|---|---|---|
| Apple Silicon 上的 macOS 14+ | 主要开发平台 | Keychain | 原生应用、菜单辅助程序、本地 Web 控制台 |
| Intel 上的 macOS 14+ | 可从源码构建;未经 QA 测试 | 从源码构建的 Keychain 辅助程序 | 从源码构建的原生界面或本地 Web 控制台 |
| Windows 10/11 x64 | 未签名的桌面预览版 | Credential Manager | 原生桌面应用和系统托盘;PowerShell 客户端和浏览器备用方案 |
| Linux x64 桌面版 | 未签名的桌面预览版 | Secret Service;显式环境变量回退方案 | 原生桌面应用和系统托盘;systemd 用户服务和浏览器备用方案 |
| Linux arm64 | npm 预览版 | Secret Service;显式环境变量回退方案 | systemd 用户服务和浏览器备用方案 |
已发布的 Apple Silicon macOS DMG 包含运行所需的全部内容。如果具备签名凭据,发行版会使用 Developer ID 签名并进行公证;否则,发行说明和 DMG README 会说明需要覆盖 Gatekeeper 限制。目前,Windows NSIS 和 Linux Debian 桌面软件包是未签名的 CI 构建产物,不会作为受支持的发行版下载内容上传。可在目标操作系统上运行 npm run build:desktop-app 构建其中任一版本;运行 npm run build:installers 可构建现有发行版安装包。
安全模型
s-gw 旨在减少凭据意外暴露给编码 Agent 的情况。它无法防范遭入侵的操作系统账户、恶意的获批可执行文件、屏幕捕获、内核级访问,也无法防范秘密信息经过转换后产生的所有衍生内容。
在将 s-gw 用于敏感工作流之前,请阅读威胁模型。如怀疑存在漏洞,请通过 GitHub 私密漏洞报告进行报告,而不要提交公开议题。
项目状态
- 公开的代理服务和客户端源码发行版处于预览质量;编译后的 Rust 执行核心为专有软件。
- macOS 是主要的开发和测试平台。
- Windows Credential Manager 支持和 Windows x64 桌面应用已提供,但仍需开展更广泛的原生 QA 测试并进行代码签名。
- Linux 使用 Secret Service 存储持久解锁材料,并使用经过强化的 systemd 用户服务。Linux x64 桌面应用是未签名的预览版;环境变量解锁仅作为非持久的无头模式备用方案。
- Windows 和 Linux 桌面安装包在完成签名并通过受支持目标系统上的验证前,均为 CI 预览版。未使用 Developer ID 签名的 macOS 发行版会在发行说明中标注为未签名,并且需要覆盖 Gatekeeper 限制。
- 此仓库已为开源协作做好准备,但涉及安全的更改应附带针对性测试,并在行为变更时更新威胁模型。
文档
贡献
欢迎提交问题和目标明确的拉取请求。请从 CONTRIBUTING.md 开始,浏览 good first issue,如有可能导致凭据泄露或绕过审批的情况,请参阅 SECURITY.md。
计划发布、撰写文章或发布社区帖子?docs/community-launch.md 中的维护者说明有助于保持公开表述一致、诚实。
许可证
本仓库中的源代码采用 Apache-2.0 许可证。请参阅 LICENSE 和 NOTICE。单独维护的 Rust 核心及其编译后的二进制文件为专有软件,不采用 Apache-2.0 许可证。第三方名称和美术作品仍归其各自所有者所有,相关信息见 TRADEMARKS.md 和第三方声明。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。