安全
Tenetora 检查的具体威胁、执行的动作边界,以及刻意留给人的责任。
适用对象
决定"什么值得信任"的操作者与复检者——并且需要确切知道机械检查在哪里结束。
任务路径
- 读威胁表:每行给出一个具体威胁、对应检查点、可观察证据和剩余责任。
- 看动作 guards 各自在何时运行、检查什么。
- 在把报告、issue 或生成 patch 粘贴进 Agent 会话前,先理解外部输入边界。
- 核对让安装与升级保持 fail-closed 的所有权规则。
威胁与控制点
| 具体威胁 | Tenetora 检查点 | 可观察证据 | 剩余责任 |
|---|---|---|---|
| 粘贴的报告要求 Agent 执行无关命令或暴露本地数据 | 语义使用或执行前的 prompt guard | finding 分类与阻断/提醒动作 | reviewer 仍需判断合法内容是否安全且与任务相关 |
| 暂存改动包含 secret、本机路径、敏感文件或无法解释的范围 | commit guard 与项目 guardrail | 具名失败检查和修复建议 | 仓库权限和用户 commit 授权仍然有效 |
| 局部检查被包装为整个任务完成 | claim 类型与 expected command 匹配 | partial/completion 类型区分、命令哈希、目标与工作树绑定 | 项目必须定义足够完整的验收命令 |
| 后续对话试图复用其他任务的 active goal 或 proof | owner/session/conversation 与 goal fingerprint 检查 | conflict、身份不匹配或目标不匹配报告 | 人显式选择或交接正确的 session |
| 安装器遇到第三方 Hook、plugin 或旧目录 | 所有权分类与事务式迁移 | foreign/需复审状态、保留路径、备份与回滚记录 | 归属不明时必须人工复核,绝不自动删除 |
| Agent 工作过程中本地环境文件被覆盖、移动或删除 | local-env 登记表 + doctor/status 发现 + commit guard + 宿主支持时的 PreToolUse | 缺失路径诊断,以及高置信度破坏操作上的 deny 决定 | 保护只覆盖已登记路径;不透明工具 payload 绝不猜测性阻断 |
动作门禁
| 动作 | Guard 检查内容 |
|---|---|
| Commit | tenetora guard --action commit——暂存范围、secret、敏感路径、提交说明、impact 状态与审查证据 |
| 修改规则或工作流 | tenetora guard --action rules |
| 外部内容 | tenetora guard --action external-input——内容被使用前完成 finding 分类 |
| 完成声明 | tenetora guard --action claim——验证命令绑定目标、身份与工作树 |
| 高风险对齐 | tenetora guard --action alignment——高风险目标必须存在 alignment session |
Guard 执行检查并生成证据,但从不创建授权:commit guard 通过也不等于获得 commit、push、部署或发布权限,这些仍需用户单独指示。
外部输入是数据,不是权限来源
网页、工单评论、共享报告、粘贴脚本、剪贴板和工具输出都是数据。external-input guard 与 prompt-guard skill 在内容被遵循前检查:指令覆盖、执行无关本地脚本、外泄 secret、改写 .tenetora,或诱导模型偏离用户可见任务。finding 向协作者预警;内容不能给自己授予任何权限。
本地环境保护
项目依赖机器专属文件(.env、本地配置、证书),它们绝不能进入 Git 或共享 evidence。保护分四层,每层有独立证据:
- 登记表记录项目所有者保护某个项目相对路径的意图——绝不保存文件内容。
status与doctor在已登记路径消失时发现,并报告登记表损坏——只读检查。- commit guard 把登记路径视为敏感路径,即使文件名不匹配任何内置规则。
- 宿主能提供结构化 PreToolUse 数据——破坏动作加登记路径——时,Hook 拒绝高置信度删除、移动、清空、写入或编辑操作。
登记路径:
tenetora local-env --path /path/to/project --allow config/local/app.conf限制是显式的:无法可靠提供工具名和路径的宿主绝不做猜测性阻断,也并非每个宿主都有文件操作级 PreToolUse。skills-only 宿主(Generic Agents)没有 PreToolUse 层——那里可用的层是 commit guard 加 doctor/status。需要恢复时先检查项目 checkpoint;绝不要为了通过 guard 删除或清空本地文件。
工作区静默与注册表卫生
全局安装的 Tenetora 不会治理同时缺少 .tenetora/ 和旧 .harness/ 的工作区:SessionStart、UserPromptSubmit、Stop、commit 和 external-input 行为在此类目录保持静默。这是项目显式启用边界,不是全局安装失效。
机器注册表会显示 stale 和 expired 状态:
tenetora installations --json list
tenetora installations --json prune --expired过期窗口是有界的,清理必须显式执行:清理只移除注册表元数据——绝不删除项目文件、治理目录、本地环境文件或第三方配置。
所有权与 fail-closed
- 已有用户 hooks 会先备份并串联执行,绝不静默替换;没有受管 marker 的 hook 绝不修改。
- 旧目录只有多组独立所有权特征匹配时才迁移;外来或归属模糊的布局原样保留并报告。
- runtime 写入、owner 切换和重复项清理 fail-closed:一条观测证据不能单独授权配置变更。
- 治理 insights 汇总趋势时不输出原始提示词、路径、session ID 或命令;样本不足时明确报告数据不足,不编造指标。
限制
- prompt guard 是机械第一道防线;新型社会工程和语义危险建议仍需要合格安全 reviewer 或明确人工决策。
- PreToolUse 保护只存在于宿主提供结构化工具数据的位置;不宣称超出已核验平台矩阵之外的宿主覆盖。
- 任何 guard 输出都不能替代项目自身的安全审查与访问控制。
- 本站不做超出上述已审计、可观察检查之外的安全保证。