You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
py/clear-text-logging-sensitive-data (aai_cli/output.py emit): every flow
was a false positive — the emitted payloads carry only masked keys, a
status dict, or a boolean — but CodeQL's taint model propagates secret
taint through all direct string ops and its name heuristics classify
api_key*/secret-named calls and assignments as sources. Fixed at the
semantically right places, each verified against a local CodeQL run:
- redact_secret (was mask_secret): assemble the masked rendering via
join(map(str, …)) so the masking function is the dataflow barrier it
semantically is; "redact" is in CodeQL's not-sensitive name list.
- doctor: rename _check_api_key -> _check_credentials (the call's name
alone made its status-dict return a "password" source).
- login: drop the api_key_only local for key_only (the sensitive-named
assignment made the boolean a source); JSON field name unchanged.
- init: literal detail branches in _key_row — key_source rode in the
same return tuple as the key, so coarse tuple taint marked the
"environment"/"keyring" label sensitive.
py/incomplete-url-substring-sanitization (12 test alerts): bare-hostname
`in` assertions pattern-match as URL sanitization. Assert the full
rendered text instead (wss://…/v1/ws, https://…/v1, "access to <host>.",
"Sharing https://…", the JSON "url" field) — stricter assertions that no
longer look like hostname checks.
https://claude.ai/code/session_01CEqnnBSv6qadZfa58skohq
Co-authored-by: Claude <noreply@anthropic.com>
0 commit comments