用途:审计并修复 JS SDK 诊断、异常、日志与遥测中的敏感数据暴露。目标是对所有运行时日志汇点建立清单,按 dontLogModelData 与 dontLogToolData 两个日志标志的契约分类每个动态值,并修复已证实的模型/工具输入输出泄露;若未证实泄露则报告结果且不改运行时代码。该技能不宣称自动污点分析,词法提示不能替代源码追踪。
主要能力与流程:先建立基线,记录 git status --short --branch 与提交;阅读 packages/agents-core/src/config.ts 的日志策略和 packages/agents-core/src/logger.ts 的辅助函数,并参考公开日志文档及最新发布版本。运行确定性清单:node .agents/skills/sensitive-logging-audit/scripts/inventory-logging.mjs --format json > /tmp/sensitive-logging-before.json,摘要模式加 --summary-only,并先运行测试 node --test .agents/skills/sensitive-logging-audit/scripts/inventory-logging.test.mjs。随后逐条分类动态汇点,优先检查原始 console.*、记录捕获值、带补充负载、插值或 JSON.stringify 等动态消息,以及模型、工具、Realtime、MCP、会话、追踪和清理边界。每个条目赋予 model、tool、model+tool、operational 或 uncertain 处置。
判定门槛:需指出真正到达汇点的值,证明其可含实际模型/工具输入输出或任意错误对象,证明相关抑制标志启用后该值仍会被格式化或记录,并用哨兵值在真实负载字段或错误路径复现。任一步缺失则保持 uncertain 或归为 operational,不改运行时代码。不得用运维名称或标识符证明泄露。
修复与回归:修复前遵循仓库兼容性决策,优先用 logModelActionError 或 logToolActionError;调试或警告路径在格式化前应用相关标志;model+tool 在任一策略禁用时脱敏;保留允许的诊断细节;脱敏模式只输出固定消息和固定类型。添加对抗性回归,覆盖脱敏与诊断模式、标志组合、哨兵值、Error/字符串/对象/补充负载/constructor 覆写/被撤销 Proxy/抛错 getPrototypeOf 及调用方可观察行为。重新运行清单比对前后指纹,运行仓库收尾门禁(如 changeset-validation、code-change-verification、pr-draft-summary),除非用户明确要求,否则在本地验证后停止。
限制:词法清单仅提供汇点覆盖与审查提示,不判敏感;调用方可配置不等于敏感;不应对普通 SDK 自有元数据编造恶意对象用例;完成报告须区分已证实泄露与保守候选及运维元数据,不得把候选数当作漏洞数,也不得因清单干净就断言所有动态值非敏感。