# 安全与科研完整性基线 > 规范性文档。默认拒绝;任何例外必须在配置、审计和测试中同时可见。 ## 1. 默认姿态 | 能力 | 生产默认 | 开发默认 | |---|---|---| | DSH permission | workspace-write + ask | 隔离 workspace-write + ask | | danger-full-access | 禁止 | 仅明确人工任务,可选且不推荐 | | generic web_fetch | 禁止 | 默认禁止 | | MCP | 无 server | 按任务显式启用 | | Cordis self-referential | 硬禁用 | 隔离 profile 可显式启用 | | 正式 subprocess | 禁止 | 仍禁止;只允许 trusted smoke fixture | | Runner network | none | none,连接器在控制面运行 | | automatic release | 禁止 | 禁止 | | full-auto | fixture-only | fixture-only | Unknown Agent role 是 none。所有项目读写执行 membership;所有 Human Decision 绑定认证 Principal。 ## 2. 身份、AuthZ 与 Gate - BFF 从 standalone 本地身份或 SSO 解析 Human Principal;DSH session 通常只用于 Agent 命令/工具关联,浏览器 actor 字段无效。唯一创建例外是 `dsh_scholar` 的显式 name-only Init:internal route 同时要求 Kernel bearer、共享 service token、仅 DSH plugin/kernel 持有的独立非空专用 token 与固定 audience 标签;专用 token 配置缺失/空白、Runner 持有的共享 token、自报 `x-service-principal:dsh-plugin`、浏览器 bearer 均不能单独授权。服务端只从 Host path session 派生 pseudonymous creator Principal,并在同一事务检查 idempotency 与原始 `session_links` 行、创建 collecting Project/active Intake/PI membership/exact link;模型、浏览器和 route body 均不能提交或覆盖 Principal/session。项目名必须等于确定性命令解析出的完整后缀名称,子串或模型补名不算 consent;疑问、否定、歧义、标点或连接词引出的后续子句、无标点的“不创建/not create/先别创建”尾句或名称不一致零写。public v2 name-only adapter 可兼容并忽略 legacy 额外字段,但不得把 strict body 当作安全边界;internal DSH request hash 必须是由专用 plugin token 签出的 route/session/name `HMAC-SHA256`,公开请求在任一方向都不能伪造或认领该幂等行。transport 在 fetch、响应头或成功响应体读取/解析阶段失败、超时或 abort 时只可 replay-only 读取同 key 已提交回执,不能用同名 link 猜测成功。任何既有活动/墓碑/悬空 link 均禁止替换; - Gate Decision 只存在于 Human BFF,Agent Tool 和命令不注册该能力; - Project 角色至少为 owner/PI、researcher、operator、auditor、viewer; - 读 Terminal 原始日志是独立权限 job_log_read,不能假设查看 status 就可读 secret-bearing log; - 编辑 TeX 需要 document_write,编译需要 job_submit 和 document_read; - 编辑 Workspace 需要 workspace_write,打开/控制 PTY 需要 terminal_write;读取 Trajectory summary/detail 与 subagent follow-up 是三个独立 capability; - Intake begin/upload 可由 researcher 请求,adoption/merge 只允许 PI Human Principal;DSH Agent 不获得 accept; - 项目无权限与不存在都返回 404; - Gate、target freeze、Decision、Project revision 和 Outbox 单事务提交。 - 安全回归必须覆盖 forged actor 被忽略、非成员跨项目 404、PI/member 变更、CSRF token 注入/轮换和撤权后 SSE 关闭。 ## 3. Web 安全 - Browser -> same-origin BFF -> Kernel;浏览器不能获取 Kernel internal Token; - Cookie 使用 HttpOnly、Secure(HTTPS)、SameSite;mutation 校验 Origin 和 CSRF; - standalone Token 保存在 0600 文件,浏览器 localStorage 只用于显式本地解锁;团队部署禁止 localStorage bearer; - 默认 16 MiB body、60 req/min/IP;上传和 Terminal 连接有独立配额; - research package 使用 intake staged upload,不得暴露 Runner internal stage;每个 stage 绑定 Principal/intake/TTL/offset/hash; - 错误脱敏,禁止返回 SQL、绝对路径、环境、Token、stack; - Artifact 和 SSE 真正流式,保留媒体类型,禁用代理缓冲; - CSP:default-src self、script-src self+每响应 nonce、style-src self+nonce(运行时 style attribute 暂需 unsafe-inline)、object-src none、base-uri none、img-src self blob data、media-src self blob、frame-src self blob、connect-src self;bootstrap 必须把同一响应 nonce 通过显式参数交给客户端,所有运行时创建的 Shadow DOM `