Cpx 与 Insight 的结构化敏感字段名单列出了 refreshToken、clientSecret,但查找使用 key.toLowerCase(),名单缺少对应的 refreshtoken、clientsecret。因此 camelCase 及纯大小写变体未命中;下划线/短横线变体正常。
refreshToken
clientSecret
key.toLowerCase()
refreshtoken
clientsecret
只用合成输入即可复现,无真实密钥或会话数据:
{"credentials":{"refreshToken":"opaque-test-refresh-credential","clientSecret":"opaque-test-client-credential"},"max_tokens":4096}
将其作为工具调用 input 经过 Cpx redactRecord() → Claude emitter → JSONL 后,两项原值仍落盘。Insight 对该 JSONL 的清洗也保留原值,长值被独立残留复检拦截;值为 tiny/short 的大写变体则通过本地上传、push、物化,仍保留明文。
redactRecord()
tiny
short
按敏感键名匹配并脱敏,与 snake_case、kebab-case 行为一致;保持非敏感 max_tokens 不变。上传前在副本中清洗,原始捕获不被改写。
max_tokens
基于最新 master 9ce8017ee71e4dd3ddaebc2f568f3ca041d0c837。修复前两项 Cpx 落盘回归失败;两项 Insight 真实本地 bare Git 上传/物化回归失败,分别为长值熔断和短值明文上传。将两份名单中的这两个元素改为小写即可与现有查找一致,不增加依赖或改动数据格式。
9ce8017ee71e4dd3ddaebc2f568f3ca041d0c837
已检查全部现有 Issue 和 open PR;Issue #23 / PR #54 处理 Authorization: Token 与裸 api_key=... 的字符串规则,和这里的结构化字段名单失配不同。本报告只包含合成测试凭证。
Authorization: Token
api_key=...
/assign @Ethan_Zou
问题与复现
Cpx 与 Insight 的结构化敏感字段名单列出了
refreshToken、clientSecret,但查找使用key.toLowerCase(),名单缺少对应的refreshtoken、clientsecret。因此 camelCase 及纯大小写变体未命中;下划线/短横线变体正常。只用合成输入即可复现,无真实密钥或会话数据:
{"credentials":{"refreshToken":"opaque-test-refresh-credential","clientSecret":"opaque-test-client-credential"},"max_tokens":4096}将其作为工具调用 input 经过 Cpx
redactRecord()→ Claude emitter → JSONL 后,两项原值仍落盘。Insight 对该 JSONL 的清洗也保留原值,长值被独立残留复检拦截;值为tiny/short的大写变体则通过本地上传、push、物化,仍保留明文。预期
按敏感键名匹配并脱敏,与 snake_case、kebab-case 行为一致;保持非敏感
max_tokens不变。上传前在副本中清洗,原始捕获不被改写。验证与修复方向
基于最新 master
9ce8017ee71e4dd3ddaebc2f568f3ca041d0c837。修复前两项 Cpx 落盘回归失败;两项 Insight 真实本地 bare Git 上传/物化回归失败,分别为长值熔断和短值明文上传。将两份名单中的这两个元素改为小写即可与现有查找一致,不增加依赖或改动数据格式。已检查全部现有 Issue 和 open PR;Issue #23 / PR #54 处理
Authorization: Token与裸api_key=...的字符串规则,和这里的结构化字段名单失配不同。本报告只包含合成测试凭证。