change-linter

Pass

Audited by Gen Agent Trust Hub on Sep 14, 2026

Risk Level: SAFECOMMAND_EXECUTIONEXTERNAL_DOWNLOADSINDIRECT_PROMPT_INJECTIONDYNAMIC_EXECUTION
Full Analysis
  • [COMMAND_EXECUTION]: The scripts/verify.py script executes various development tools including git, uv, ruff, mypy, pyright, ty, and pyrefly. The script mitigates risks by using shutil.which to resolve absolute paths for all executables and employing shell=False in all subprocess.run calls, which prevents shell-based command injection from file paths or other arguments.
  • [EXTERNAL_DOWNLOADS]: The skill allows the agent to install missing linting tools using the uv tool install command. This behavior is documented in SKILL.md as requiring explicit user consent, and the script only triggers these downloads if the --install-missing flag is passed. The tools being downloaded are standard, well-known Python developer utilities.
  • [INDIRECT_PROMPT_INJECTION]: The skill ingests untrusted data by running linters and type-checkers on Python and Shell files within the user's project repository. The output of these tools is then processed by the agent. A malicious file could potentially be crafted to produce linter output that attempts to influence the agent's logic.
  • Ingestion points: The scripts/verify.py script identifies changed files via git status and git diff, and the actual content of these files is ingested by the various linting tools.
  • Boundary markers: The script uses standardized prefixes like verify: and clear visual separators (e.g., --- 失败: [tool] ---) to help the agent distinguish tool output from status reports.
  • Capability inventory: The script possesses the capability to execute any binary available in the system PATH and write to temporary directories for caching purposes.
  • Sanitization: All external data (file paths) is treated as literal arguments to subprocesses with shell=False to prevent interpretation by the shell.
  • [DYNAMIC_EXECUTION]: When the ruff tool is unavailable, the script uses sys.executable -m py_compile to perform a basic syntax check. This involves the Python interpreter compiling source code into bytecode to verify correctness, which is a form of dynamic execution although the resulting bytecode is not run.
Audit Metadata
Risk Level
SAFE
Analyzed
Sep 14, 2026, 12:36 PM
Security Audit — agent-trust-hub — change-linter