kontext-security/kontext-cli
GitHub: kontext-security/kontext-cli
Kontext CLI是一个开源运行时安全平台,用于控制AI代理的工具权限并提供审计追踪。
Stars: 199 | Forks: 6
Kontext 是一个面向 AI 代理的授权平台。它帮助团队通过范围限定的凭据、策略执行、审批和审计追踪来控制代理可以访问和执行的操作。Kontext 可以以本地优先模式运行,供开发代理使用,并可扩展至托管或自托管部署,适用于安全敏感环境。
## 🚀 快速开始
```
brew install kontext-security/tap/kontext
```
Homebrew 软件包也会安装 `llama.cpp`,它提供了本地 LLM 判断器所使用的 `llama-server` 运行时。首次使用时,Kontext 会自动管理默认的 GGUF 判断模型:如果该模型尚未在本地缓存,它会在回环地址上启动 `llama-server` 之前,将其下载到 Kontext 模型缓存中。
## 启动本地保护会话
```
kontext start
```
这会启动当前支持的适配器 Claude Code,并使用本地 Kontext 运行时。无需托管登录。
默认情况下,Kontext 运行在观察模式:代理继续运行,同时 Kontext 在本地仪表板中记录 `would allow`(将允许)和 `would deny`(将拒绝)的决策。该仪表板在回环地址上提供服务,启动时会打印出 URL。
要阻止支持的风险性工具操作前操作,请以强制模式启动:
```
KONTEXT_MODE=enforce kontext start
```
## 核心功能
Kontext 为 AI 代理平衡安全性和实用性:低风险操作继续执行,不安全的操作可以在执行前被阻止。
- **审计追踪:** 记录谁指示了哪个代理执行了什么操作、代理访问了什么、调用了哪些工具、做出了什么策略决定以及接下来发生了什么。为安全审查、事件调查和合规证据构建责任链。
- **确定性策略:** 在运行时,在代理操作执行之前,对其应用 `allow` 和 `deny` 规则。对已知边界(如破坏性命令、生产资源、敏感文件、数据导出和凭据访问)使用硬性策略。
- **概率性风险检测:** 将确定性策略允许的操作路由到本地判断器,以获得额外的允许/拒绝决定,而无需将工具上下文发送到托管服务。
- **凭据注入:** 在运行时使用符合 RFC 8693 标准的 OAuth 2.0 令牌交换注入范围限定的 OAuth 凭据,这样代理就可以访问已批准的工具,而无需用户将密钥粘贴到聊天、配置文件或项目环境中。凭据可以是短期的、最小权限的,并且绑定到当前用户、会话或工作流。
本地决策路径如下:
```
Agent tool call
-> Kontext hook
-> local runtime socket
-> action classification
-> deterministic policy
-> probabilistic risk score
-> allow / deny
-> local dashboard
```
## 托管会话
当您需要在本地安全路径之上,使用托管身份、短期提供商凭据和共享追踪时,请使用托管会话:
```
kontext start --managed
```
托管会话将提供商凭据置于代理配置和项目文件之外。Kontext 创建包含提供商占位符的 `.env.kontext`:
```
GITHUB_TOKEN={{kontext:github}}
LINEAR_API_KEY={{kontext:linear}}
```
在运行时,Kontext 使用符合 RFC 8693 标准的 OAuth 2.0 令牌交换,为活动代理会话将这些占位符替换为短期的、范围限定的凭据。您添加的字面值保持不变。
有关企业身份、审计保留、组织控制、部署规划、自定义使用量以及安全与平台团队的引导服务,请联系 [michel@kontext.security](mailto:michel@kontext.security) 或 [在此预订](https://calendar.superhuman.com/book/11W5Y8b5JsB8dOzQbd/YECs9)。
## 安全默认设置
| 默认设置 | 行为 |
| --- | --- |
| 本地评估 | 默认的 `kontext start` 不需要托管登录或追踪上传。 |
| 观察模式 | 决策记录为 `would allow` 或 `would deny`,而不阻止代理。 |
| 回环仪表板 | 本地仪表板默认绑定到回环地址。 |
| 脱敏存储 | 工具事件和决策在本地存储,并进行脱敏处理。 |
| 托管本地判断器 | Homebrew 通过 `llama.cpp` 安装 `llama-server`;Kontext 在需要时下载并缓存默认的 GGUF 判断模型。 |
| 无推理捕获 | Kontext 捕获工具事件和结果,而非 LLM 推理、令牌使用或完整对话历史。 |
## 代理支持
| 代理 | 状态 | 启动命令 | 支持级别 |
| --- | --- | --- | --- |
| Claude Code | 活跃 | `kontext start` 或 `kontext start --agent claude` | 本地观察/强制模式、仪表板诊断、托管会话。 |
| Goose | 计划中 | 即将推出 | 适配器尚未发布。 |
| Codex | 计划中 | 即将推出 | 适配器尚未发布。 |
| Cursor | 计划中 | 即将推出 | 适配器尚未发布。 |
可以通过适配器添加其他代理,这些适配器将兼容的工具事件发送到本地运行时。
## 架构
```
kontext start
|
|-- Agent hook adapter (Claude Code today)
| |-- PreToolUse -> kontext hook --agent claude --mode observe --socket /tmp/kontext/.../kontext.sock
| |-- PostToolUse -> kontext hook --agent claude --mode observe --socket /tmp/kontext/.../kontext.sock
|
|-- Local runtime: Unix socket service + RuntimeCore
|-- Local dashboard: 127.0.0.1:4765
|-- Deterministic policy: curated rule categories + active profile
|-- Probabilistic risk: localhost allow/deny decision after deterministic allow
|-- Store: local SQLite with redacted events and decision metadata
```
## 开发
```
go build -o bin/kontext ./cmd/kontext
go test ./...
go test -race ./...
go vet ./...
pnpm install --frozen-lockfile
pnpm build
```
使用以下命令生成 protobuf 代码:
```
buf generate
```
服务定义位于 [kontext-security/proto `agent.proto`](https://github.com/kontext-security/proto/blob/main/proto/kontext/agent/v1/agent.proto)。
## 社区
- 请阅读 [SUPPORT.md](SUPPORT.md) 了解支持渠道。
- 在提交贡献前,请阅读 [CONTRIBUTING.md](CONTRIBUTING.md)。
- Kontext CLI 根据 [MIT 许可证](LICENSE) 发布。
标签:AI代理安全, AI安全, Chat Copilot, EVTX分析, Go语言, Lerna, Streamlit, 代码分析, 决策日志, 凭证管理, 威胁情报, 安全敏感环境, 审计跟踪, 开发者工具, 开源安全工具, 授权平台, 控制面板, 日志审计, 本地LLM, 本地优先部署, 权限管理, 模型越狱, 知识图谱, 程序破解, 策略执行, 网络安全, 访问控制, 逆向工程平台, 隐私保护