mcpField
O
occasio

occasio

本地服务
github.com/occasiolabs安全918 周前更新

关于 occasio

Occasio 是面向开发者和合规团队的本地代理与审计工具,用于 AI 编码 Agent。它按可配置策略控制 Agent 流量,并生成哈希链日志和可验证的证据包。

主要功能

  1. 01按策略控制 Agent 操作
  2. 02阻止读取机密并限制身份使用
  3. 03在本地查看外发流量
  4. 04验证防篡改审计链
  5. 05生成可移交的证据包
  6. 06扫描机密和策略违规

适用场景

  1. 01检查 Agent 发往 LLM 的内容
  2. 02要求 SSH 或云访问经人工批准
  3. 03离线验证 Agent 的 CI 运行记录
  4. 04在 CI 中检测策略变更

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"occasiolabs-occasio": {
"command": "npx",
"args": [
"-y",
"@occasiolabs/occasio"
]
}
}
}
启动命令npx -y @occasiolabs/occasio

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@occasiolabs/occasio0.10.0

工具

3

收录的工具列表 · 更新于 2 周前

参数类型必填说明
pathstring是要读取的文件路径
end_lineany否要读取的最后一行(从 1 开始,包含该行)
start_lineany否要读取的第一行(从 1 开始,包含该行)

详细介绍

Occasio

面向 AI 编码 Agent 的本地优先审计链和身份门禁。你的提示词、工具调用和审计日志都留在你的机器上,以后还可通过密码学手段验证——Agent 可以请求身份(ssh / cloud / root),但不能悄悄假定自己拥有该身份。

Occasio 是一个本地代理,位于你的 AI 编码 Agent(Claude Code、Cline,或任何与 Anthropic API 通信的程序)和你配置的大模型端点之间。每次工具调用都会经过一个由你控制、易于阅读的策略文件。你可以实时查看哪些内容正在离开你的机器,阻止不应发生的操作,并生成一份防篡改的哈希链日志。数月后,第三方仍可离线验证这份日志,以便在你需要时证明 Agent 做过什么。

Occasio 不会向第三方发送任何数据。没有 Occasio 云服务,没有 Occasio 账户,也没有遥测。有关架构,请阅读 docs/WHY-LOCAL.md;有关它与云托管 AI 可观测性工具的区别,请阅读 docs/COMPARE.md;有关本地优先产品如何在 Apache 2.0 许可下获得资金支持,请阅读 docs/SUSTAINABILITY.md。

occasio eyes — 实时浏览器视图,展示一个出站交互,以及工具结果中突出显示的已隐藏机密

截图:使用合成数据运行 occasio eyes --demo——不包含真实路径,也没有真实流量。演示模式下始终显示左上角的“(demo)”徽章。

npm install -g @occasiolabs/occasio

occasio demo audit       # Auditor scenario: signed attestation + cross-verifier proof (10s, no API key)
occasio demo attest      # End-to-end attestation pipeline against a synthetic chain
occasio demo anomalies   # Live EDR detection on a synthetic adversarial chain
occasio harness          # Real Claude Code attacking a denied path — defense holds

前三个演示使用合成数据运行,因此你可以在几秒钟内查看完整流程,且无需外部依赖。第四个演示会在你的 Anthropic 登录下启动一个真实的 Claude Code 从属进程(内置身份验证——无需 API 密钥),并端到端验证防护机制。请从 demo audit 开始——它能回答唯一真正重要的问题:“证明你的 AI Agent 在 CI 中做了什么。”


身份门禁——请求,而非假定

构建此工具是为应对这样一种事件:Agent 只被要求执行部署命令,却自行通过 ssh 登录服务器并读取 env。strict 策略会精准阻止这种行为——AI Agent 可以请求身份,但不能悄悄假定自己拥有身份。

  • 拒绝数据外泄,与工具无关。 printenv、cat .env、/proc/self/environ、读取私钥、通过 grep 搜索机密名称——无论使用哪种命令或工具读取,都会被阻止;输出绝不会到达模型。
  • 借用身份需要人工介入。 ssh / scp、az / 云控制平面、sudo / systemctl——这些操作会被默认拒绝,并返回“需要人工批准”的拒绝响应,Agent 无法自行满足审批要求。
  • 握手过程会区分各方身份。 Agent 发起请求;你从自己的终端通过带外方式授权一次:
occasio init --template strict          # the identity-gated posture
# agent runs `ssh deploy@host`  →  BLOCKED, pending apr_…
occasio approvals approve apr_… --once  # you, single-use, short TTL
# the agent's retry passes through once — then it's blocked again

Agent 无法自行批准:审批控制平面位于其拒绝区内,令牌由 HMAC 签名。链中会记录 actor=ai_agent · delegator=you · approved_by=you。另有一个非代理的执行强制机制——PreToolUse 钩子(occasio hook --install)——用于覆盖未经过代理的执行。

完整设计、威胁模型和诚实说明的剩余风险(运行时间接访问、出站流量):docs/identity-gate.md。


两种使用方式

大多数人来到这里,都是为了其中一种需求——选择适合的列,然后按需浏览。

日常开发工作CI / 合规
你想了解的问题“Agent 实际向 Anthropic 发送了什么?这让我花了多少钱?”“证明 Agent 在这次运行期间做了什么。”
主要命令occasio eyes、occasio dashboard、--budget N、--eyes、occasio scan、occasio preflight simulateoccasio attest、occasio bundle → occasio verify、occasio policy lock/diff、occasio anomalies、occasio audit verify
你将获得在 127.0.0.1 上运行的实时浏览器界面——查看每个出站负载、字节数明细和完整显示的脱敏内容;还可预览策略会允许或拦截的操作一个便携的证据文件,第三方可通过一条命令离线验证;已签名/批准的策略锁定,以及每轮的用量限制
跳转到实时可见性 · 扫描器与预检证据工作流 · 策略工作流

两种视图读取相同的底层日志。你不必二选一——运行代理即可免费获得两者。


快速入门

初次使用? 5 分钟入门指南 将带你完整走一遍身份门控流程——安装 → init --template strict → 运行 Agent → 批准借用 → 验证日志。指南中的每条命令都经过测试,适用于已发布版本。

需要 Node.js ≥ 18。支持 Windows、macOS 和 Linux。

npm install -g @occasiolabs/occasio   # Install
occasio doctor                          # Verify setup (Node, claude CLI, port, profile)
occasio init                            # Write ~/.occasio/policy.yml (dev-default)
occasio init --template strict          # …or the identity gate: deny secrets, gate ssh/cloud/root behind approval
occasio register                        # Add 'claude' shell alias (one-time)
claude "read package.json and tell me the version"

注册别名后,每次调用 claude 都会透明地通过 Occasio 路由。审计链记录会累积写入 ~/.occasio/pipeline-events.jsonl。

检查运行情况:

occasio status                  # Session totals
occasio replay --detail         # Run-level audit
occasio audit verify            # Re-walk the hash chain end-to-end
occasio anomalies               # Run EDR detectors over the last 15 minutes
occasio attest --run-id <uuid>  # Build a behavioral attestation for one session
occasio explain <event-id>      # Why was this blocked? — the matched policy rule + how to unblock

命令矩阵

按操作类型分组。(stable) = 核心功能,且有测试覆盖;(beta) = 端到端可用,但适用范围较窄;(alpha) = 脚手架。完整列表:occasio help。

命令用途
claude [args]通过本地代理启动 Claude Code(stable)
status · ledger · replay · boundary · inspect检查成本 / 令牌 / 单次运行审计 / 云端边界(stable)
eyes · dashboard实时查看出站流量的浏览器/终端视图(beta)
scan --file|--stdin可解释的机密扫描(前缀/jwt/env-key/熵),发现问题时退出码为 1(stable)
preflight simulate预测候选操作相对于当前策略会被允许还是拦截(stable)
preflight回溯挖掘过去开场操作模式的工具(beta)
audit verify · attest [verify]验证哈希链 · 构建/验证已签名证明(stable)
bundle --run <id> → verify <file>将一次运行打包为便携证据文件 · 离线验证(stable)
policy show/validate/lock/diff检查 · lint · 记录已批准策略 · 检测偏移(stable)
explain <event-id>将 BLOCK 与导致它的规则及解除阻止的方法关联起来(stable)
anomalies对链进行窗口化 EDR 检测(beta)
doctor [--paranoid]设置健康检查 · 本地优先的自审计(stable)

证据工作流

生成一个文件,供审计员或 CI 接收并通过一条命令完成检查:

occasio attest --run-id <uuid> --sign          # behavioral attestation (Sigstore optional)
occasio bundle --run <uuid> --out run.occasio.json   # pack attestation + chain slice + policy + manifest
occasio verify run.occasio.json                 # 6 offline checks; exit ≠ 0 on tamper

verify 会检查架构、清单哈希、链切片完整性、策略绑定、git 状态与链的交叉核对,以及存在时的 Sigstore 签名——所有检查均依据文件中嵌入的数据进行(绝不依赖生成者的机器)。通过 git_state 行(HEAD + 差异哈希 + 已更改文件),将运行与它实际触及的代码绑定。签名是可选的;未签名的 bundle 仍会验证其他所有内容。Bundle 会嵌入生成者的绝对路径——这是一种内部审计制品;公开分享前请先审查。→ docs/VERIFY.md

策略工作流

~/.occasio/policy.yml 管理 Occasio 控制的路径:机密处理、deny_paths/allow_paths、自定义 deny_patterns、每轮 limits 以及工具路由。批准该文件并固定其状态,以防配置漂移:

occasio policy init                              # starter policy.yml
occasio policy validate                          # lint before you rely on it
occasio policy lock --sign --out policy.lock.json   # record the approved policy
occasio policy diff --since policy.lock.json     # CI gate: exit 1 if the policy drifted

→ docs/POLICY.md

扫描器和预检

occasio scan --file .env                         # explainable secret findings (masked, exit 1)
occasio preflight simulate --read ~/.ssh/id_rsa --bash "npm test" --strict   # would the policy block this?

scan 绝不会以明文形式打印机密(会显示遮蔽后的片段和 SHA-256)。preflight simulate 会使用运行时所用的同一策略引擎检查候选操作,并显示匹配的规则,以及如何解除阻止。→ docs/SCAN.md · docs/PREFLIGHT.md


验证本地优先声明

occasio doctor --paranoid

扫描已安装的源代码,查找所有出站网络原语,对每个调用点进行分类,检查遥测 SDK 特征,并显示审计链状态。如果出现任何严重发现,则以非零状态码退出。使用 --paranoid --json 输出 JSON。有关此验证所依据的架构,请参阅 docs/WHY-LOCAL.md。

了解 Occasio 与 SLSA Provenance 和 CycloneDX AI-BOM 的关系:docs/SUPPLY-CHAIN-TRIANGLE.md。Occasio 负责运行时行为这一环。


实时可视化——面向开发者

审计链和签名证明回答的是审计人员的问题:“Agent 做了什么?拿出证据。” 有时,你可能也想了解一个更简单的问题:“Agent 此刻正在做什么?” 这条 HTTP 请求中有哪些内容正在离开你的设备。本次会话中有哪些文件已经发送给 Anthropic。系统提示词是什么样的。哪些内容在发送前被删去了。

occasio eyes 是一个本地浏览器 UI,地址为 http://127.0.0.1:3002,会准确展示这些信息。通过代理上的 --eyes 启用捕获(默认关闭);数据不会离开设备,所有内容都存储在 ~/.occasio/eyes/ 下。

occasio eyes --demo            # synthetic data, no proxy needed (10-second tour)
occasio claude --eyes          # then in another terminal:
occasio eyes                   # browser tab opens automatically

你可以看到:

  • 按用户提示词分组的侧边栏——展开一条“读取 readme”,即可查看它实际触发的 3–6 次 HTTP 往返(让 Claude Code 的 Agent 循环一目了然)。
  • 会话迷你折线图和文件汇总——查看出站数据大小随时间的变化,以及哪些文件已发送到云端、发送了多少次。
  • 每次交互的字节拆分——堆叠条显示 system / 历史记录(重放)/ 本轮新增内容 / 工具封装。原本“很小”的请求竟有 124 KB,这下就说得通了:其中 108 KB 是每次都会重复发送的同一份系统提示词。
  • 选项卡:Request · Response · Tools(完整的本地工具输出——由拦截器在本地处理、从未发送出去的 Read/Glob/Grep/Bash 字节)· Diff(转换前与发送内容的对比——在本地清晰查看被删去的原始机密)· Headers · Raw SSE 字节 · Stats。
  • 新出站请求到达时的实时闪现提示——既便于了解情况,也适合演示。
适合屏幕录制的视图 — --sanitize

使用真实会话录制 occasio eyes 演示或截图时,通常会泄露你的身份信息:主目录路径(C:\Users\<you>\...)、操作系统用户名、Git 邮箱、真实姓名和主机名。--sanitize 标志只会在显示内容中将这些信息替换为确定性的化名,不会更改 ~/.occasio/eyes/ 下的磁盘内容,因此审计记录仍然是真实的。

occasio claude --eyes --sanitize    # capture as normal
occasio eyes --sanitize             # view with identity scrubbed

在浏览器 UI 中,青色圆点和 (sanitized) 徽标表示该功能已启用。类似 C:\Users\<you>\Desktop\proj 的路径会变为 /home/user-7c/Desktop/proj,并在同一会话中保持一致。

--sanitize 会处理的内容: $HOME 路径、操作系统用户名、Git user.email / user.name、主机名,以及包含身份信息的环境变量(USER、USERNAME、LOGNAME、HOME、USERPROFILE)。

不会处理的内容 — 分享前请检查:

  • $HOME 之外的项目路径(例如 D:\Work\Acme\…)
  • 工具输出中的 Git 远程 URL(github.com:org/repo 会泄露组织名称)
  • 文件内容 — 注释、提交消息或 README 中的姓名不会被自动检测。Sanitize 会根据它从操作系统和 Git 中发现的身份信息进行处理,而不会搜索任意子字符串。
  • Claude Code TUI 横幅(“Welcome back X”、组织名称行)— 它会在任何 HTTP 流量出现之前打印,因此 Eyes 无法拦截。请在屏幕录制中手动裁剪。

该标志是显示过滤器,不是录制模式。同一份 Eyes 捕获内容之后可以不经脱敏地重放(只需在运行 occasio eyes 时不加该标志)。

Dashboard 与 Eyes

两者都是本地浏览器 UI,但回答的问题不同:

occasio dashboard(3001)occasio eyes(3002)
重点会话级指标:费用、节省金额、令牌数每次交互的流量:发送了什么、收到了什么
粒度汇总计数器 + 每个请求的摘要表完整 HTTP 正文、解码后的 SSE、本地工具输出
是否需要捕获否 — 读取 session.json + 每日日志是 — 为代理传入 --eyes(选择启用)
数据范围仅元数据完整负载字节(保存在本地 ~/.occasio/eyes/ 下)
最适用于“我今天花了多少钱?”“Agent 实际向 Anthropic 发送了什么?”

两者都仅在 127.0.0.1 上运行。不启用 CORS、无身份验证、不连接外部网络。


命令

命令功能
occasio(无参数)活跃运行的统一实时快照
occasio claude [args]启动 Claude Code,并启用 Occasio 代理
occasio register注册 claude shell 别名
occasio doctor设置健康检查
occasio doctor --paranoidSaaS 防护证明扫描(--watch <s>、--sign、--json)
occasio live在终端监视活跃会话(按 Ctrl-C 退出)
occasio status会话总量及节省明细
occasio explain <event_id>显示单个链事件记录的内容及原因
occasio replay运行级审计(--detail、--run <id>、--attribute)
occasio inspect每个请求的云边界清单
occasio boundary三列视图:已生成/已重新进入/已阻止
occasio ledger每个请求的令牌账本
occasio distill检查提炼后的工具输出
occasio dashboard位于 http://localhost:3001 的实时浏览器仪表板(会话指标)
occasio eyes位于 http://127.0.0.1:3002 的浏览器界面(每次交互的流量,通过 --eyes 选择启用捕获)
occasio audit verify端到端重新遍历 SHA-256 审计链
occasio audit repair --file <path>截断因崩溃而不完整的末尾行(写入 .bak)
occasio report导出治理摘要(--days N、--format csv)
occasio anomalies对审计链进行 EDR 检测(--window 15m、--json)
occasio attest --run-id <uuid>构建行为证明谓词 v1
occasio attest --sign通过 GitHub Actions OIDC 使用 Sigstore 签名
occasio attest verify <file>端到端重新验证已签名的证明
occasio receipt [--run <id>] [--sign]简短且可分享的运行摘要(--out file、--json)
occasio bom export [--run <id>]从运行切片生成 CycloneDX 1.6 ML-BOM(--out file)
occasio compliance export [--run <id>]审计员资料包:链 + 收据 + BOM + 框架映射
occasio policy [show | validate | init | doctor]策略编写与诊断
occasio harness针对你的策略运行脚本化对抗场景
occasio redteam自主测试器 LLM 探测目标 Claude Code 会话
occasio computer-use --dry-run将 Computer-Use 策略应用于合成的 tool_use 块
occasio demo attest针对合成链运行端到端证明流水线
occasio demo anomaliesEDR 冒烟测试:合成对抗链 → 全部 4 个检测器
occasio selftest在临时链上执行进程内治理自检
occasio baseline [learn | compare]按项目建立行为基线并检测漂移
occasio preflight只读挖掘近期活动并生成策略建议

在 policy.yml 基础上的会话级覆盖项:

标志效果
--preset strict在此会话中强制启用 block_secrets_in_tool_results
--preset off纯透传,仅记录
--budget <N>硬性上限:会话费用达到 $N 时返回 HTTP 402
--hardened通过统一运行时处理 Read/Glob/Grep,并进行提炼和机密扫描
--eyes捕获出站和入站载荷,供 occasio eyes 浏览器界面使用

它的工作原理:四层架构

底层由四层协同完成工作——每次运行都会经过第 1–2 层;只有在你请求生成证明或运行检测器时,才会经过第 3–4 层。

第 1 层——工具调用拦截。 本地代理位于 Agent 与 Anthropic API 之间。Read、Glob、Grep、TodoRead/TodoWrite 都在你的设备上进程内运行;文件字节不会进入出站请求。精选的只读 shell 命令(git status、git log --oneline -N,可带或不带 git -C <path>,以及 echo / cd 当前工作目录前缀链)也会在进程内执行。其他 shell 读取命令(cat <file> 等)会针对其中嵌入的读取路径进行策略分析,以确保 deny_paths 始终一致地生效;但命令本身会通过 Bash 工具在服务器端执行。

第 2 层——策略执行。 每次工具调用都会触发以下某个决策:LOCAL / PASS / BLOCK / TRANSFORM;决策由 policy.yml 驱动。deny_paths 会针对解析为真实路径的绝对路径生效,因此符号链接和路径遍历变体都会解析为相同的拒绝结果。block_secrets_in_tool_results 会从所有工具输出中剔除 API 密钥和 JWT,避免它们重新进入提示词。支持热重载:编辑 policy.yml 后,变更会在下一次调用时生效,并在审计链中写入一条 policy_loaded 记录。strict 模板还增加了身份门控——deny_commands 会拦截数据外泄行为(环境变量转储、搜索密钥名称),而 identity_approval 会通过一次性、经人工批准的令牌,对身份借用行为(ssh / az / sudo)进行门控(参见身份门控——请求,不要假设)。

第 3 层——行为证明。 occasio attest --run-id <uuid> 会生成一个独立的 JSON 谓词,其中包含某个 Agent 会话完整审计链片段的承诺:每次工具调用、每次拦截、每次转换、每个已剔除的机密,以及当前策略的 SHA-256 哈希和规则摘要。--sign 会将其封装为 in-toto Statement v1,并使用 GitHub Actions OIDC 通过 Sigstore 签名(无需管理密钥)。谓词类型 URI 为 agent-attestation/v1。项目附带两个独立的参考验证器——Node(occasio attest verify)和 Python(docs/attest_verify.py);测试套件会断言它们对同一载荷的验证结果逐字节一致。

第 4 层——异常检测(EDR)。 occasio anomalies 会在审计链的指定时间窗口内运行四个检测器:拒绝率激增、文件读取量骤增、此前未见的工具输入形态,以及机密剔除率激增。严重程度会根据你的历史基线逐级提升——检测器级别上,约为正常值的 ×10–×20 时会触发 HIGH;与稀疏的正常基线相比,实际观测到的倍数通常在 ×100 至 ×1000 之间。可参阅 docs/edr-demo.md,了解可复现的纵深防御演示。


架构

agent (Claude Code / Cline / MCP / Computer Use)
  │
  ▼  tool call
┌──────────────────────────────────────────────────────────────┐
│  Occasio proxy                                            │
│                                                              │
│  Layer 1: adapter parse → canonical event                    │
│  Layer 2: policy decision (LOCAL / PASS / BLOCK / TRANSFORM) │
│  Layer 2: deny_paths + deny_patterns + secret redaction      │
│  Layer 2: native dispatch for LOCAL/TRANSFORM tools          │
│           ──► row appended, SHA-256-chained                  │
│  Layer 4: anomaly detectors (windowed, on-demand or live)    │
└──────────────────────────────────────────────────────────────┘
  │
  ▼  cloud-bound: only PASS calls, with shaped result if TRANSFORM
Anthropic API

End of session
  │
  ▼  occasio attest --run-id … --sign
Layer 3: signed in-toto Statement → Sigstore bundle → GitHub Check Run
  │
  ▼  independent verifier
Node / Python / cosign — all must agree

验证

要获得已验证的证明,以下三项独立检查缺一不可:

  1. Sigstore 签名 — Fulcio 证书链 + Rekor 包含证明。任何符合 sigstore 规范的工具均可验证(cosign verify-blob、sigstore-js、sigstore-python)。
  2. DSSE 负载 ↔ 证明谓词等价性 — 重新解码 bundle 中的 in-toto Statement,通过 RFC 8785 子集规范化谓词,并与证明谓词逐字节比较(去除 signature 元数据字段)。
  3. 审计链完整性 — 从 GENESIS 哨兵开始,沿每个 prev_hash → hash 链接执行 SHA-256 遍历,然后断言证明的 first_hash 和 last_hash 按正确的相对顺序出现在链中。

随附两个并列的参考验证器:

  • Node:occasio attest verify <file>
  • Python:python docs/attest_verify.py <file> — 使用标准库 + 可选的 sigstore-python,并在链检查步骤中复用 docs/audit_walker.py。参见 docs/python-verifier.md。

跨语言不变量(在测试套件中以 xlang: 和 xlang-float: 用例断言):对于同一负载,两个验证器在谓词等价性和审计链检查步骤上逐字节一致,包括篡改检测用例。两个规范化实现都会拒绝非整数数值,避免未来的架构悄然引入差异。

Sigstore 签名步骤使用标准的 DSSE 封装 in-toto Statement 格式;任何符合 sigstore 规范的工具均可验证(cosign verify-blob、sigstore-js、sigstore-python)。测试套件会模拟签名流程;真实的 OIDC 端到端签名与验证往返需要 GitHub Actions 环境,并由 CI 中的 integrations/attest-action/ 工作流进行测试。

第三个部分验证器在浏览器中运行,位于 integrations/attest-view/,用于拖放检查。浏览器会执行谓词等价性和审计链检查步骤,但将 Sigstore 证书链验证交由两个 CLI 之一完成(有意不在浏览器中打包 Fulcio/Rekor 信任根;页面对此有明确说明)。


为什么是现在

三个监管驱动因素正汇聚到同一项要求上:AI Agent 行为的运行时证据必须可通过密码学手段验证。

  • 《欧盟 AI 法案》第 12 条要求对高风险 AI 系统进行全面的自动化日志记录。该要求自 2026 年起适用于受监管行业。
  • **NIST AI RMF(GOVERN、MEASURE、MANAGE 系列)**正成为美国联邦采购的要求,并影响 FedRAMP AI 控制措施。
  • SOC 2 通用标准正将 AI Agent 控制措施纳入范围 — 主要事务所的审计人员在 2026 年的审计中开始询问“给我看看 Agent 的工具调用日志”。

目前没有现成产品能够为 AI 编码 Agent 在你的 CI 中执行的操作生成已签名、可由第三方验证的证明。Occasio 以开放架构(Apache-2.0)填补了这一空白,并附带该架构的参考实现。


日志格式

所有数据都存储在本地的 ~/.occasio/ 中:

~/.occasio/
  pipeline-events.jsonl        # tamper-evident audit chain (SHA-256 linked)
  policy.yml                   # active policy
  session.json                 # current run_id, totals
  logs/YYYY-MM-DD.jsonl        # per-request log
  baseline/<cwd-hash>.json     # per-project behavior baseline (opt-in)
  eyes/                        # `occasio eyes` capture (opt-in via --eyes)
    payload-NNNNNN.json        # per-exchange metadata + extracted blocks
    content/<sha>              # content-addressed blob store (file bytes,
                               # tool outputs) — dedup by SHA-256

审计链行架构记录在 docs/AUDIT.md 中。每一行都包含 prev_hash 和 hash(SHA-256 十六进制值),第一行通过固定的 GENESIS 哨兵(64 个零)接入链中。occasio audit verify 和 docs/audit_walker.py 是两个独立的遍历器实现。


演示

  • 纵深 EDR 防御 — 真实的 Claude Code 在你的策略下攻击被拒绝的路径,所有拦截均被保留,EDR 触发次数达到基线的 HIGH ×100–×1000。可在 2 分钟内复现。
  • 参考流水线 — 包含 AI Agent 的 PR → GitHub Action 通过 Sigstore 无密钥方式签署证明 → PR 上的 Check Run → 离线独立验证。
  • 跨协议治理 — 同一条 deny_paths 规则在 Claude Code 的 HTTP 代理和 MCP 服务下生成完全相同的 BLOCK 行。

参考


要求

  • Node.js ≥ 18
  • Claude Code(npm install -g @anthropic-ai/claude-code)——或任何遵循 ANTHROPIC_BASE_URL 的 Agent
  • Python 3(可选)——独立验证器和 LAO 上下文裁剪所需
  • sigstore-python(可选)——为 Python 验证器添加 Sigstore 加密步骤

许可证

Occasio 根据 Apache License 2.0 开源,其中明确授予专利许可,以支持安全的企业使用。0.6.6 及更早版本根据 MIT License 发布,并将永久沿用 MIT 许可证。

欢迎贡献,贡献内容遵循 Apache-2.0;请根据 DCO 对提交进行签署(git commit -s)。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。