keyring 25.7.0
- Source
- https://github.com/jaraco/keyring
- Tag scanned
v25.7.0- Compared with
v25.6.0(0 signals introduced since)- Files
- 52 scanned, 7 skipped (binary, oversized, or unrecognised)
- Signals
- 0 critical · 0 warn · 7 info
- Scan time
- 6.1 s
- LLM review
- Reviewed by claude-haiku-5-5 (Anthropic): 5 of 5 warn and critical signals; 5 demoted to info.
- Disclude version
- 4.0.0
- Scanned (UTC)
- 2026-10-14 18:53
Signals
Ordered by severity, then signals introduced in this release. Hidden characters are shown as ⟨U+…⟩.
-
choices=likely benign Bash tab-completion helper that runs the invoked keyring command with --list-backends to gather backend names.Reasoning
The command invoked is COMP_WORDS[0], the program the user is already typing, called with --list-backends to populate tab completion. This is the standard bash completion idiom. It runs only the user's own command, not a fixed or attacker-chosen payload, and the output is just printed names.
-
choices+=() donelikely benign Zsh completion function that runs the current keyring command with --list-backends to list priorities and backends.Reasoning
This is the zsh counterpart: $words[1] is the command being completed, run with --list-backends to build the completion choices. It is the same benign completion pattern, and the flagged variable is the user's own command word.
-
, , = = returnlikely benign Dynamic import of a keyring backend module from a configured dotted class name.Reasoning
The module name comes from splitting a configured keyring backend name on the last dot, then importing that module before getattr to fetch the class. This is the plugin-loading mechanism for a keyring library. The import target is configuration-driven, not fetched from the network or built from obfuscated data. The critical severity reflects the dynamic import pattern itself, not evidence of malicious intent in this code.
-
-
-
# by default, use Unix convention = =likely benign Selects the platform-specific data root directory by looking up a module-level constant named after the OS.Reasoning
globals().get looks up one of several module-level constants (_data_root_Linux, _data_root_Darwin, etc.) by the OS name from platform.system(), with a Linux default. This is a common, simple way to pick platform-specific paths. It reads only fixed local constants, so it cannot reach arbitrary code.
-
= =likely benign Selects the platform-specific config root directory by looking up a module-level constant named after the OS.Reasoning
Same OS-keyed lookup of platform-specific config root constants, with a Linux fallback. It is a benign platform-dispatch pattern that reads only fixed module constants.
Reproduce This Scan
Run disclude locally to verify. Add --format sarif for SARIF output. Add --llm (with an API key in the environment) to include the LLM review.
&&