风险门禁与内容安全
风险门禁与内容安全
lark-cli 的安全设计不是一个开关,而是分散在命令 metadata、schema、输出、文件 IO、内容扫描和 root error handler 里的多层机制。
风险等级
root help 直接提醒:每个命令的 help 会显示 read | write | high-risk-write。在 internal/schema/assembler.go 里,高风险写入会被加上 yes schema 字段:
CLI confirmation gate. Must be true to execute.
Pass --yes only after the user has explicitly confirmed.
这意味着高风险动作不是靠提示语劝人小心,而是有执行门禁。缺少确认时会返回 confirmation_required,exit code 是 10。
Dry-run
--dry-run 的价值是让 Agent 先构建请求而不执行副作用。cmd/api 在 dry-run + file upload 时不会真的读取文件内容,而是返回文件上传元信息;typed commands 和 shortcuts 也会在各自实现里尽量保留这个预演语义。
写入类工作流建议固定顺序:
lark-cli schema ...看参数、scope、risk;lark-cli ... --dry-run看将要发出的请求;- 用户确认后再执行;
- 高风险写入才加
--yes。
内容安全扫描
internal/output/emit.go 里有 ScanForSafety,输出前会按命令路径和 provider 配置扫描数据:
- block 模式会返回 typed
ContentSafetyError; - warn 模式在 JSON envelope 中带
content_safety_alert; - 对
--jq过滤场景,还会向 stderr 写 warning,避免 alert 被 jq 表达式过滤掉。
这说明安全检查不只在输入侧,也在输出侧。对于会读取文档、邮件、消息的 CLI,这一点很关键。
文件与路径
源码里还有 internal/vfs、extension/fileio、internal/validate、shortcuts/apps/sensitive_paths.go 等路径和文件相关保护。文件上传、下载、发布静态站点、导入导出表格时,路径校验比普通 API 参数更敏感。
下一篇:事件、插件与质量门禁。