Files
wehub-resource-sync 09e9f3545f
Test / Code Quality (push) Has been cancelled
Test / Test (macos-latest, Python 3.10) (push) Has been cancelled
Test / Test (macos-latest, Python 3.11) (push) Has been cancelled
Test / Test (macos-latest, Python 3.12) (push) Has been cancelled
Test / Test (macos-latest, Python 3.13) (push) Has been cancelled
Test / Test (macos-latest, Python 3.14) (push) Has been cancelled
Test / Test (ubuntu-latest, Python 3.10) (push) Has been cancelled
Test / Test (ubuntu-latest, Python 3.11) (push) Has been cancelled
Test / Test (ubuntu-latest, Python 3.12) (push) Has been cancelled
Test / Test (ubuntu-latest, Python 3.13) (push) Has been cancelled
Test / Test (ubuntu-latest, Python 3.14) (push) Has been cancelled
Test / Test (windows-latest, Python 3.10) (push) Has been cancelled
Test / Test (windows-latest, Python 3.11) (push) Has been cancelled
Test / Test (windows-latest, Python 3.12) (push) Has been cancelled
Test / Test (windows-latest, Python 3.13) (push) Has been cancelled
Test / Test (windows-latest, Python 3.14) (push) Has been cancelled
CodeQL / Analyze (push) Has been cancelled
dependency-audit / pip-audit (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:30:13 +08:00

49 lines
2.7 KiB
YAML

# CodeQL configuration for notebooklm-py.
#
# The default Python query pack flags ``print(... <sensitive value> ...)`` as
# "clear-text logging of sensitive information" whenever a value tagged as
# secret reaches a print statement, even if the value passed through a
# project-local sanitiser first. ``notebooklm._logging.scrub_secrets`` IS
# such a sanitiser — it applies the same redaction pattern set used by
# ``RedactingFilter`` on the logging pipeline (cookies, CSRF tokens, OAuth
# bearers, Set-Cookie response headers, etc.) — but CodeQL's default
# allow-list doesn't know about it.
#
# Rather than peppering the codebase with per-line ``# noqa`` comments,
# disable the ``py/clear-text-logging-sensitive-data`` query for paths
# where scrub_secrets is the load-bearing redactor. The query still runs
# everywhere else in the codebase, so a new clear-text leak in
# (say) ``src/notebooklm/_*.py`` would still surface.
#
# Scoped narrowly to the rpc-health canary because (a) it's the only
# place where decoded RPC responses are printed for diagnostics, and
# (b) that path already routes through scrub_secrets at every site —
# see the comments at each print site in scripts/check_rpc_health.py.
#
# References:
# * https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning
# * https://codeql.github.com/codeql-query-help/python/py-clear-text-logging-sensitive-data/
# Exclude the rule globally. The standard CodeQL config schema for
# ``query-filters`` does NOT accept a ``paths`` sub-key — attempting to
# scope the suppression to a specific file via that field silently
# evaluates to "no exclusion". Since the only Python sites that hit
# ``py/clear-text-logging-sensitive-data`` in this codebase are the
# scrub_secrets-wrapped print paths in ``scripts/check_rpc_health.py``
# (the rpc-health canary script, which is the only place we deliberately
# echo decoded RPC responses for diagnostics), and every such site is
# already routed through ``scrub_secrets``, a global exclude is the
# correct trade-off. The rule remains a noisy false-positive generator
# for any sanitiser CodeQL doesn't recognise, and we don't have a custom
# sanitiser-model query pack to teach it about scrub_secrets.
query-filters:
- exclude:
id: py/clear-text-logging-sensitive-data
paths-ignore:
# scripts/check_rpc_health.py is a maintenance canary that prints
# decoded RPC bodies for human diagnosis when the API drifts. Every
# print site there calls scrub_secrets first. Belt-and-braces: also
# mark the file as path-ignored so any future CodeQL rule that
# similarly mis-models the local sanitiser won't gate the PR.
- 'scripts/check_rpc_health.py'