用途:审计或修复 Python SDK 在诊断、异常、日志和遥测中的敏感数据暴露。收集脚本仅作基于语法的搜索辅助,不解析别名或控制流,不认证策略守卫,也不能证明“无候选即安全”。
主要能力与流程:
- 建立审查面:在当前检出中工作并保留无关改动,阅读 src/agents/_debug.py、src/agents/logger.py 及相关调用方;将异常消息、参数、回溯、cause、context、note、名称、URL 等视为潜在敏感。先运行收集器测试,再收集候选: uv run python .agents/skills/sensitive-logging-audit/scripts/test_inventory.py uv run python .agents/skills/sensitive-logging-audit/scripts/inventory_logging.py --format json --output /tmp/sensitive-logging-candidates.json 报告不含策略、安全或守卫分类。
- 补充源码搜索:收集器不跟踪 emit = logger.error 这类赋值,需直接搜索别名、回调、包装器和反射分发,例如: rg -n '.(debug|info|warning|warn|error|exception|critical|fatal|log)\b' src/agents rg -n '\b(print|pprint|pp|warn|warn_explicit|write|writelines|print_exc|print_exception)\b' src/agents rg -n 'DONT_LOG_(MODEL|TOOL)DATA|log(model|tool|model_and_tool)_action' src/agents 不得把收集器覆盖或文本守卫当作安全结论,需追踪生产者与调用方。
- 人工分类:为每条路径标注 model、tool、model+tool、operational、intentional-output 或 uncertain,并在审计报告中记录证据。
- 修复运行时边界:改动前使用 $implementation-strategy;格式化或检查敏感值前检查 _debug.DONT_LOG_MODEL_DATA 与 _debug.DONT_LOG_TOOL_DATA;任一标志禁用数据日志时对混合值脱敏;脱敏模式输出固定消息并省略敏感 args、extra、exc_info;惰性构建仅诊断用上下文;显式启用敏感日志时保留有用诊断;日志失败不得改变回退、清理、事件、拒绝或取消行为;MCP URL 在诊断模式移除凭据、查询参数和片段,不得用净化名称替代固定脱敏消息。
- 证明调用方行为:在每个变更的调用边界加测试,检查完整 LogRecord 而非仅渲染文本,覆盖两种脱敏策略、诊断模式、恶意对象、异常链及可观察的回退或清理行为。
- 复跑并收尾:重跑收集器、手动搜索、聚焦测试和适用仓库门禁;运行时或测试改动使用 $code-change-verification,必要时用 $pr-draft-summary。候选数量仅作搜索覆盖报告,优先报告已确认修复的泄露、保留的有意输出、已审查的不确定项和验证结果,绝不能把收集器干净结果当作不存在敏感日志路径的证明。
限制:收集器不解析别名与控制流,不认证策略守卫;分类与结论依赖人工源码追踪;具体平台、收费与价格信息暂未提供。