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.5 s
- LLM review
- Reviewed by claude-haiku-5-5 (Anthropic): 5 of 5 warn and critical signals; 5 demoted to info.
- Disclude version
- 4.1.0
- Scanned (UTC)
- 2026-10-22 06:12
Signals
Ordered by severity, then signals introduced in this release. Hidden characters are shown as ⟨U+…⟩.
-
choices=dismissed Bash tab-completion helper that runs the keyring command with --list-backends to gather backend names.Reasoning
The command name comes from COMP_WORDS[0], the program the user is already completing (keyring itself), and it is called with --list-backends to populate completion choices. This is the standard way a bash completion script queries its own CLI, not a hidden execution path.
-
choices+=() donedismissed Zsh completion function that runs the current keyring command with --list-backends to offer backend choices.Reasoning
$words[1] is the command being completed in zsh's completion system, and the script invokes it with --list-backends to build the priority list. This matches the bash counterpart and is ordinary completion behaviour.
-
, , = = returnlikely benign Backend loader that imports a module from a dotted keyring class name taken from configuration.Reasoning
This is keyring's plugin loader: it splits a configured dotted backend name, imports the module, and fetches the class with getattr. The module name comes from configuration or entry-point names set by the user or installed packages, not from untrusted remote input. Flagged as critical, but the pattern is the expected design of a plugin system. Residual doubt is that any config-supplied name can cause an import.
-
-
-
# by default, use Unix convention = =likely benign Chooses the data-root path function for the current OS by looking up a name in module globals with a default.Reasoning
The globals() lookup builds a name from a fixed prefix plus platform.system(), which returns a small set of OS names, and falls back to a Linux default. This is a simple, bounded per-platform dispatch with no attacker-controlled input.
-
= =likely benign Chooses the config-root path function for the current OS by looking up a name in module globals with a default.Reasoning
Same bounded per-platform dispatch as the data_root line: a fixed prefix plus platform.system() selects the config-root function, with a Linux default. Nothing here is attacker-controlled or hidden.
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.
&&