Repository navigation
feat(interactive): M5 trusted Host provenance and model data isolation - #6
Conversation
… strict P0-A submission types
…nance, artifact allowlist and public task disclosure gates
…ifact allowlist, policy and adversarial provenance
…d Host signing key or SQLite
…t package inventory
…d fail-closed authorization contracts
…te runtime separation and failure policy
… M5 Host boundary
…l and align task byte bound
…blished Agent task
…ible missing list
…y accepted identical receipt
… preserves historical idempotent Ack
…replay Ack from new receipt
…icy/request/body proofs
FlowKit P0-A / M5 — 完整源码复审与验收记录(2026-11-10 UTC)审查版本(不可替换): 源码 / 契约独立核对
审查发现及关闭
实际、可追溯的门禁证据GitHub Actions
剩余明确边界本 PR 不是 in-process JS sandbox,不能证明 Windows 宿主 ACL、Codex/Claude/Grok 原生审批来源、任何真实第三方 Agent Provider 的可信会话记录或外部 exactly-once。M6 才做最终宿主集成验收。V0.6-R5 正文未在本轮以完整文件形式取得;本复审依据已经确认的 P0-A 约束、实际 M1–M4 产物/源码差异、审查反例及真实 CI,不伪称对不可访问设计文档逐行复核。未执行 npm 发布、站点部署、开源或 P0-B/P1/P2 变更。 M5 复审裁决:通过 scoped 代码与 CI 门禁,允许按已授权的 squash merge 进入 main;后续 M6 单独验收。 |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 1ae2dfa. Configure here.
| throw new TypeError('Invalid Host binding identifier'); | ||
| } | ||
| return value; | ||
| } |
There was a problem hiding this comment.
Key ID length limits disagree
Medium Severity
trustedPublicKeys ids pass name() up to 128 characters and are pinned into policyHash, but createAgentReceiptStatement and encodeAgentReceiptStatement reject a keyId longer than 64. A Host that uses a long id, including a sha256: fingerprint, can start runs that no valid proof can ever complete.
Additional Locations (2)
Reviewed by Cursor Bugbot for commit 1ae2dfa. Configure here.


Scope — approved P0-A M5 only
Build a separate Host-only security facade around the completed M4 Coordinator without changing the existing Standard root API or implementing any P0-B features.
getPublicAgentTaskreads the authoritative waiting checkpoint, enforces an explicit allowlist of Agent input fields and requires affirmative Host disclosure authorization before releasing a model task. Never includes private State, Host policy, receipt ledger, DB/credential references.Security boundary explicitly NOT claimed
The low-level M4
createInteractiveCoordinatorremains an internal Host capability. This facade is not an in-process sandbox; any model that shares Host UID, private key, database writes, raw Coordinator access or a trusted signer may bypass it. Those environments must be BLOCKED for trusted-host operations. The test signer uses isolated test keys; real Codex/Claude/Grok native approval and transport origin proof remain out of scope and must not be invented.Gate
Review actual diff and semantics; run real
npm run verifyand documentation consumers on Ubuntu/Windows × Node22/24; run separate real Linux OS-user isolation jobs on Node22+24. Repair every observed P0/P1, rerun all relevant CI at the exact final HEAD before squash merging. Do not publish npm, deploy, open source, or progress beyond P0-A/M5 before accepting this gate.Note
High Risk
Changes security-critical Host/model boundaries, cryptographic receipt verification, and disclosure policy; incorrect handling could allow forged receipts or unintended data leakage to models.
Overview
Adds
createTrustedInteractiveHost, an M5 security facade around the existing Coordinator that keepscomplete()and the store Host-private while exposing onlygetPublicAgentTaskandaccept({receipt, attestation})to the model boundary.Signed Agent receipts use canonical Ed25519 attestations (
host-attestation.mjs): pinned program artifacts, public keys, input allowlists, disclosure approval, and proof lifetime checks run before any CAS; Human/Action/Verification and string provenance are rejected.Shipping & evidence: new exports/types, package manifest entries,
interactive-host-security.md, consumer and attack-negative tests, and a dedicated CI job runningtests/security/host-isolation.mjs(unprivilegednobodyprocess cannot read Host key/SQLite).Reviewed by Cursor Bugbot for commit 1ae2dfa. Bugbot is set up for automated code reviews on this repo. Configure here.