Public scan — anyone with this URL can view this analysis. Sign up to track your own repos privately, run scheduled re-scans, and get AI fix prompts via your dashboard.
165 of your 228 findings came from Repobility's proprietary detections. ✓ Repobility tags below mark them.

Scan timing: clone 6.42s · analysis 3.49s · 77.8 MB · GitHub API rate-limit (preflight)

Aider-AI/aider

https://github.com/Aider-AI/aider.git · scanned 2026-06-24 18:07 UTC (1 month ago) · 10 languages

433 raw signals (220 security + 213 graph) 11/13 scanners ran 11th percentile · Python · medium (20-100K LoC)

UNIFIED Repobility · multi-layer engine · AI coders

Complete repo analysis

Last scanned 1 month ago · v1 · 250 actionable findings from 2 signal sources. 183 repeated signals grouped for readability. Security checks, system graph analysis, and verified AI-agent feedback are merged into one review queue.

JSON
Score breakdown â 2026-05-18-v5
Component Sub-score Weight Contribution
structure_score 60.0 0.15 9.00
security_score 100.0 0.25 25.00
testing_score 100.0 0.20 20.00
documentation_score 90.0 0.15 13.50
practices_score 89.0 0.15 13.35
code_quality 45.0 0.10 4.50
Overall 1.00 85.3
security_score may be inflated — optional security scanners were skipped on this fast scan
Severity distribution — click a segment to filter
Active filters: excluding tests × Reset all
Scan summary Repository scanned at 47.7/100 with 100.0% coverage. It contains 2056 nodes across 1 cross-layer flows, written primarily in mixed languages. Engine surfaced 213 findings — concentrated in security (83), quality (53), cicd (34). Risk profile is high: 8 critical, 32 high, 70 medium. Recommended next step: open the security layer findings first — that's where the highest-impact wins live.

Showing 190 of 250 actionable findings. 433 raw detector signals were grouped into reader-sized issues. Click TP / FP to vote on a finding's accuracy — votes adjust the confidence weighting and improve detection across the platform.

high Security checks quality Quality conf 1.00 ✓ Repobility 10 occurrences [MINED107] Missing import: `io` used but not imported: The file uses `io.something(...)` but never imports `io`. This raises NameError at runtime the first time the line executes.
Add `import io` at the top of the file.
10 files, 10 locations
aider/coders/base_coder.py:526
aider/deprecated.py:118
aider/main.py:97
aider/models.py:1169
aider/onboarding.py:91
aider/scrape.py:61
aider/utils.py:331
aider/versioncheck.py:46
critical System graph security Trivy conf 1.00 CVE-2026-35030: litellm 1.82.3 — requirements.txt
litellm: LiteLLM: Authentication bypass and privilege escalation via OIDC userinfo cache key collision LiteLLM is a proxy server (AI Gateway) to call LLM APIs in OpenAI (or native) format. Prior to 1.83.0, when JWT authentication is enabled (enable_jwt_auth: true), the OIDC userinfo cache uses tok…
VulnCve 2026 35030
critical System graph security Trivy conf 1.00 CVE-2026-42208: litellm 1.82.3 — requirements.txt
LiteLLM: LiteLLM: Unauthorized data access and modification via SQL injection LiteLLM is a proxy server (AI Gateway) to call LLM APIs in OpenAI (or native) format. From version 1.81.16 to before version 1.83.7, a database query used during proxy API key checks mixed the caller-supplied key value i…
VulnCve 2026 42208
critical System graph security Trivy conf 1.00 CVE-2026-49468: litellm 1.82.3 — requirements.txt
LiteLLM: Authentication Bypass via Host Header Injection LiteLLM is a proxy server (AI Gateway) to call LLM APIs in OpenAI (or native) format. Prior to 1.84.0, This vulnerability is fixed in 1.84.0. Package: litellm Installed: 1.82.3 Fixed in: 1.84.0 Severity: CRITICAL Fix: Upgrade litellm to 1.…
VulnCve 2026 49468
critical System graph security Secrets conf 1.00 Possible secret in aider/analytics.py
Detected pattern matching generic_api_key. Rotate the credential and move to a secret manager.
aider/analytics.py:56
critical System graph security Semgrep conf 1.00 subprocess shell true — aider/commands.py:980
Found 'subprocess' function 'run' with 'shell=True'. This is dangerous because this call will spawn the command using a shell process. Doing so propagates current shell settings and variables, which makes it much easier for a malicious actor to execute commands. Use 'shell=False' instead. Rule: py…
SecurityPython
critical System graph security Semgrep conf 1.00 subprocess shell true — aider/editor.py:134
Found 'subprocess' function 'call' with 'shell=True'. This is dangerous because this call will spawn the command using a shell process. Doing so propagates current shell settings and variables, which makes it much easier for a malicious actor to execute commands. Use 'shell=False' instead. Rule: p…
SecurityPython
critical System graph security Semgrep conf 1.00 subprocess shell true — aider/io.py:1094
Found 'subprocess' function 'run' with 'shell=True'. This is dangerous because this call will spawn the command using a shell process. Doing so propagates current shell settings and variables, which makes it much easier for a malicious actor to execute commands. Use 'shell=False' instead. Rule: py…
SecurityPython
critical System graph security Semgrep conf 1.00 subprocess shell true — aider/run_cmd.py:67
Found 'subprocess' function 'Popen' with 'shell=True'. This is dangerous because this call will spawn the command using a shell process. Doing so propagates current shell settings and variables, which makes it much easier for a malicious actor to execute commands. Use 'shell=False' instead. Rule: …
SecurityPython
low Security checks quality Quality conf 1.00 ✓ Repobility 3 occurrences [MINED006] Overcatch Baseexception: except BaseException: ... — prevents Ctrl+C and SystemExit from working.
Review and fix per the pattern semantics. See CWE-705 / for context.
3 files, 3 locations
aider/copypaste.py:66
aider/voice.py:109
aider/waiting.py:214
high Security checks quality Quality conf 1.00 ✓ Repobility 25 occurrences [MINED108] `self.old_prompt` used but never assigned in __init__: Method `do_recent_msgs` of class `GUI` reads `self.old_prompt`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance.
Initialize `self.old_prompt = <default>` in __init__, or add a class-level default.
2 files, 25 locations
aider/gui.py:289, 298, 299, 302, 308, 319, 417, 418, +5 more (14 hits)
aider/repomap.py:204, 215, 220, 241, 244, 248, 251, 258, +3 more (11 hits)
high Security checks software dependencies conf 0.90 ✓ Repobility 3 occurrences [MINED118] Dockerfile FROM `buildpack-deps:jammy` not pinned by digest: `FROM buildpack-deps:jammy` resolves the tag at build time. The registry CAN re-push a different image for the same tag, so every build is potentially different. Production images should pin to `image@sha256:...` for reproducibility + supply-chain integrity.
Replace with: `FROM buildpack-deps:jammy@sha256:<digest>`. Get the digest from `docker manifest inspect`. Re-pin via a scheduled bot (Renovate, Dependabot).
3 files, 3 locations
benchmark/Dockerfile:1
docker/Dockerfile:1
scripts/Dockerfile.jekyll:2
high Security checks software dependencies conf 0.90 ✓ Repobility [MINED119] Dockerfile `ADD https://sh.rustup.rs`: Dockerfile `ADD <url>` downloads a remote artifact into the image with no integrity check. If the host or DNS is compromised between layers — or if the URL serves a different file later — malicious content gets baked into the image.
Download the file in CI with a known checksum, vendor it into the repo, and COPY it during the build. Or use `RUN curl -sSL URL | sha256sum -c <(echo '<expected> -')` to verify.
benchmark/Dockerfile:38
high Security checks software dependencies conf 0.90 ✓ Repobility 4 occurrences [MINED131] pre-commit hook `https://github.com/PyCQA/isort` pinned to mutable rev `5.12.0`: `.pre-commit-config.yaml` references `https://github.com/PyCQA/isort` at `rev: 5.12.0`. If `{rev}` is a branch or version tag, the repo owner can push new code there and `pre-commit install --install-hooks` will fetch it on every developer's machine.
Pin to a commit SHA: `rev: <40-char-sha>` and bump it through `pre-commit autoupdate` (which writes to PRs that are reviewed).
lines 2, 7, 12, 17
.pre-commit-config.yaml:2, 7, 12, 17 (4 hits)
low Security checks security path traversal conf 0.80 [SEC013] Path Traversal — User Input in File Path: User-controlled input used in file path without sanitization. Allows reading arbitrary files.
Use os.path.realpath() and verify the path starts with your expected base directory. Use secure_filename() for uploads.
scripts/redact-cast.py:20
high Security checks software File upload conf 1.00 [SEC032] Unrestricted File Upload — no extension/MIME validation: File upload accepts the user's filename without validating extension, content-type, or magic bytes. Attackers upload `.php`, `.jsp`, or executable files to a web-served directory, then visit the URL to trigger RCE. CWE-434. Examples: Apache Struts (CVE-2017-9805), countless WordPress plugin RCEs.
Validate THREE things server-side: 1. Extension allowlist: ALLOWED = {'.png', '.jpg', '.pdf'} ext = Path(file.filename).suffix.lower() if ext not in ALLOWED: abort(400) 2. Magic-byte check (don't trust the extension): import magic mime = magic.from_buffer(file…
aider/history.py:135
high Security checks cicd CI/CD security conf 0.92 Dockerfile pipes a remote script into a shell
Download the artifact, verify its checksum or signature, pin the version, and then execute it.
benchmark/Dockerfile:43 CI/CD securitycontainers
high System graph security Trivy conf 1.00 AWS-0164: Instances in a subnet should not receive a public IP address by default. — tests/fixtures/languages/hcl/test.tf
Instances in a subnet should not receive a public IP address by default. Subnet associates public IP address. Rule: AWS-0164 Severity: HIGH Target: tests/fixtures/languages/hcl/test.tf
Misconfig
high System graph security Trivy conf 1.00 CVE-2026-35029: litellm 1.82.3 — requirements.txt
litellm: LiteLLM: Remote code execution and privilege escalation via unrestricted proxy configuration endpoint LiteLLM is a proxy server (AI Gateway) to call LLM APIs in OpenAI (or native) format. Prior to 1.83.0, the /config/update endpoint does not enforce admin role authorization. A user who is…
VulnCve 2026 35029
high System graph security Trivy conf 1.00 CVE-2026-40192: pillow 12.1.1 — requirements.txt
Pillow: Pillow: Denial of Service via decompression bomb in FITS image processing Pillow is a Python imaging library. Versions 10.3.0 through 12.1.1 did not limit the amount of GZIP-compressed data read when decoding a FITS image, making them vulnerable to decompression bomb attacks. A specially c…
VulnCve 2026 40192
high System graph security Trivy conf 1.00 CVE-2026-40217: litellm 1.82.3 — requirements.txt
LiteLLM: LiteLLM: Arbitrary Code Execution via bytecode rewriting LiteLLM through 2026-04-08 allows remote attackers to execute arbitrary code via bytecode rewriting at the /guardrails/test_custom_code URI. Package: litellm Installed: 1.82.3 Fixed in: 1.83.10 Severity: HIGH Fix: Upgrade litellm t…
VulnCve 2026 40217
high System graph security Trivy conf 1.00 CVE-2026-42203: litellm 1.82.3 — requirements.txt
litellm: LiteLLM: Arbitrary code execution via unsandboxed prompt templates LiteLLM is a proxy server (AI Gateway) to call LLM APIs in OpenAI (or native) format. From version 1.80.5 to before version 1.83.7, the POST /prompts/test endpoint accepted user-supplied prompt templates and rendered them …
VulnCve 2026 42203
high System graph security Trivy conf 1.00 CVE-2026-42215: gitpython 3.1.46 — requirements.txt
GitPython is a python library used to interact with Git repositories. ... GitPython is a python library used to interact with Git repositories. From version 3.1.30 to before version 3.1.47, GitPython blocks dangerous Git options such as --upload-pack and --receive-pack by default, but the equival…
VulnCve 2026 42215
high System graph security Trivy conf 1.00 CVE-2026-42271: litellm 1.82.3 — requirements.txt
litellm: LiteLLM: Authenticated command execution via MCP stdio test endpoints LiteLLM is a proxy server (AI Gateway) to call LLM APIs in OpenAI (or native) format. From version 1.74.2 to before version 1.83.7, two endpoints used to preview an MCP server before saving it — POST /mcp-rest/test/conn…
VulnCve 2026 42271
high System graph security Trivy conf 1.00 CVE-2026-42284: gitpython 3.1.46 — requirements.txt
GitPython is a python library used to interact with Git repositories. ... GitPython is a python library used to interact with Git repositories. Prior to version 3.1.47, _clone() validates multi_options as the original list, then executes shlex.split(" ".join(multi_options)). A string like "--bran…
VulnCve 2026 42284
high System graph security Trivy conf 1.00 CVE-2026-42311: pillow 12.1.1 — requirements.txt
Pillow is a Python imaging library. From version 10.3.0 to before vers ... Pillow is a Python imaging library. From version 10.3.0 to before version 12.2.0, processing a malicious PSD file could lead to memory corruption, potentially resulting in a crash or arbitrary code execution. This issue has…
VulnCve 2026 42311
high System graph security Trivy conf 1.00 CVE-2026-44243: gitpython 3.1.46 — requirements.txt
GitPython: GitPython: Arbitrary file write via crafted reference paths GitPython is a python library used to interact with Git repositories. Prior to version 3.1.48, a vulnerability in GitPython allows attackers who can supply a crafted reference path to an application using GitPython to write, ov…
VulnCve 2026 44243
high System graph security Trivy conf 1.00 CVE-2026-44244: gitpython 3.1.46 — requirements.txt
GitPython is a python library used to interact with Git repositories. ... GitPython is a python library used to interact with Git repositories. Prior to version 3.1.49, GitConfigParser.set_value() passes values to Python's configparser without validating for newlines. GitPython's own _write() con…
VulnCve 2026 44244
high System graph security Trivy conf 1.00 CVE-2026-44431: urllib3 2.6.3 — requirements.txt
urllib3: urllib3: Information disclosure via cross-origin redirects forwarding sensitive headers urllib3 is an HTTP client library for Python. From 1.23 to before 2.7.0, cross-origin redirects followed from the low-level API via ProxyManager.connection_from_url().urlopen(..., assert_same_host=Fals…
VulnCve 2026 44431
high System graph security Trivy conf 1.00 CVE-2026-44432: urllib3 2.6.3 — requirements.txt
urllib3: urllib3: Denial of Service due to excessive HTTP response decompression urllib3 is an HTTP client library for Python. From 2.6.0 to before 2.7.0, urllib3 could decompress the whole response instead of the requested portion (1) during the second HTTPResponse.read(amt=N) call when the respo…
VulnCve 2026 44432
high System graph security Trivy conf 1.00 CVE-2026-47101: litellm 1.82.3 — requirements.txt
LiteLLM allows an authenticated internal_user to create API keys with access to routes that their role does not permit LiteLLM prior to 1.83.14 allows an authenticated internal_user to create API keys with access to routes that their role does not permit. When generating a key, the allowed_routes …
VulnCve 2026 47101
high System graph security Trivy conf 1.00 CVE-2026-47102: litellm 1.82.3 — requirements.txt
LiteLLM allows a user to modify their own user_role via the /user/update endpoint LiteLLM prior to 1.83.10 allows a user to modify their own user_role via the /user/update endpoint. While the endpoint correctly restricts users to updating only their own account, it does not restrict which fields m…
VulnCve 2026 47102
high System graph security Trivy conf 1.00 CVE-2026-48818: starlette 0.52.1 — requirements.txt
starlette: Starlette: SSRF and NTLM credential theft via UNC paths in StaticFiles on Windows Starlette is a lightweight ASGI framework/toolkit. In versions 1.0.1 and earlier, StaticFiles on Windows is vulnerable to SSRF. An UNC path such as \\attacker.com\share can cause os.path.realpath to initia…
VulnCve 2026 48818
high System graph security Trivy conf 1.00 CVE-2026-54283: starlette 0.52.1 — requirements.txt
Starlette is a lightweight ASGI framework/toolkit. From 0.4.1 until 1. ... Starlette is a lightweight ASGI framework/toolkit. From 0.4.1 until 1.3.1, request.form() accepts max_fields and max_part_size to bound resource consumption while parsing form data. These limits are enforced for multipart/f…
VulnCve 2026 54283
high System graph hardware Supply chain conf 1.00 Dockerfile pipes a remote installer into a shell
Executing downloaded code during image build gives the remote endpoint build-time code execution. Prefer pinned packages or verify downloaded installers by checksum/signature.
benchmark/Dockerfile:43 containersRemote installer
high System graph security Trivy conf 1.00 DS-0002: Image user should not be 'root' — benchmark/Dockerfile
Image user should not be 'root' Specify at least 1 USER command in Dockerfile with non-root user as argument Rule: DS-0002 Severity: HIGH Target: benchmark/Dockerfile
Misconfig
high System graph security Trivy conf 1.00 DS-0002: Image user should not be 'root' — scripts/Dockerfile.jekyll
Image user should not be 'root' Specify at least 1 USER command in Dockerfile with non-root user as argument Rule: DS-0002 Severity: HIGH Target: scripts/Dockerfile.jekyll
Misconfig
high System graph security Trivy conf 1.00 DS-0021: 'apt-get' missing '-y' to avoid manual input — scripts/Dockerfile.jekyll
'apt-get' missing '-y' to avoid manual input '-y' flag is missed: 'apt-get update && apt-get install libcurl4' Rule: DS-0021 Severity: HIGH Target: scripts/Dockerfile.jekyll
Misconfig
high System graph security Trivy conf 1.00 2 occurrences DS-0029: 'apt-get' missing '--no-install-recommends' — benchmark/Dockerfile
'apt-get' missing '--no-install-recommends' '--no-install-recommends' flag is missed: 'apt-get update && apt-get install -y software-properties-common cmake libboost-all-dev && add-apt-repository ppa:deadsnakes/ppa && apt-get update && apt-get install -y python3.11 …
2 occurrences
repo-level (2 hits)
Misconfig
high System graph security Trivy conf 1.00 DS-0029: 'apt-get' missing '--no-install-recommends' — scripts/Dockerfile.jekyll
'apt-get' missing '--no-install-recommends' '--no-install-recommends' flag is missed: 'apt-get update && apt-get install libcurl4' Rule: DS-0029 Severity: HIGH Target: scripts/Dockerfile.jekyll
Misconfig
high System graph security Trivy conf 1.00 GHSA-69x8-hrgq-fjj8: litellm 1.82.3 — requirements.txt
LiteLLM: Password hash exposure and pass-the-hash authentication bypass ### Impact Three issues combine into a full authentication bypass chain: 1. Weak hashing: User passwords are stored as unsalted SHA-256 hashes, making them vulnerable to rainbow table attacks and trivially identifying users …
VulnGhsa 69x8 hrgq fjj8
high System graph security Trivy conf 1.00 GHSA-mv93-w799-cj2w: gitpython 3.1.46 — requirements.txt
GitPython: Newline injection in config_writer() section parameter bypasses CVE-2026-42215 patch, enabling RCE via core.hooksPath Summary The patch for CVE-2026-42215 (GitPython 3.1.49) validates newlines only in the value parameter of set_value(). The section and option parameters are passed to c…
VulnGhsa mv93 w799 cj2w
high System graph security security conf 1.00 Insecure pattern 'python_os_system' in benchmark/README.md:26
Found a known-risky pattern (python_os_system). Review and replace if possible.
benchmark/README.md:26 Python os system
high System graph security security conf 1.00 Insecure pattern 'subprocess_shell_true' in aider/commands.py:974
Found a known-risky pattern (subprocess_shell_true). Review and replace if possible.
aider/commands.py:974 Subprocess shell true
high System graph security security conf 1.00 Insecure pattern 'subprocess_shell_true' in aider/editor.py:134
Found a known-risky pattern (subprocess_shell_true). Review and replace if possible.
aider/editor.py:134 Subprocess shell true
high System graph security security conf 1.00 Insecure pattern 'subprocess_shell_true' in aider/io.py:1093
Found a known-risky pattern (subprocess_shell_true). Review and replace if possible.
aider/io.py:1093 Subprocess shell true
high System graph security security conf 1.00 Insecure pattern 'subprocess_shell_true' in aider/run_cmd.py:62
Found a known-risky pattern (subprocess_shell_true). Review and replace if possible.
aider/run_cmd.py:62 Subprocess shell true
high System graph security security conf 1.00 Insecure pattern 'tls_verify_false' in aider/main.py:524
Found a known-risky pattern (tls_verify_false). Review and replace if possible.
aider/main.py:524 Tls verify false
medium Security checks security auth conf 0.92 [AUC001] No Repobility access matrix policy found: The repository uses web/API frameworks but does not define .repobility/access.yml or equivalent authorization documentation.
Add .repobility/access.yml mapping routes to anonymous, authenticated, owner, admin, and super_admin. Keep business-specific rules in the repo so CI can enforce them.
low Security checks quality Error handling conf 1.00 3 occurrences [ERR001] Silent Exception Swallowing: Silently swallowing all exceptions hides bugs. Even in cleanup code, log at DEBUG level.
Log the error: `except Exception: logger.debug('cleanup failed', exc_info=True)`. Or handle specific exception types.
3 files, 3 locations
aider/mdstream.py:146
aider/report.py:81
aider/utils.py:221
medium Security checks software dependencies conf 0.90 ✓ Repobility 21 occurrences [MINED124] requirements.txt: `numpy<2; python_version < "3.11"` has no version pin: Unpinned pip requirement means every fresh install may resolve a different version. Newer releases can introduce malicious code (typosquats, account compromises). Reproducible installs need exact pins.
Replace `numpy<2; python_version < "3.11"` with `numpy<2; python_version < "3.11"==<version>` and manage upgrades through PRs / Dependabot.
5 files, 21 locations
requirements/requirements-dev.in:1, 2, 3, 4, 5, 6, 7, 8, +7 more (15 hits)
requirements.txt:478, 486 (2 hits)
requirements/requirements-help.in:1, 4 (2 hits)
requirements/requirements-browser.in:1
requirements/requirements-playwright.in:1
low Security checks security Injection conf 0.50 [SEC005] Command Injection Risk: Unsafe shell execution or eval of user input.
Use subprocess with shell=False and a list of args. Never eval user input.
aider/run_cmd.py:62
low Security checks security Injection conf 0.50 [SEC005] Command Injection Risk: Unsafe shell execution or eval of user input.
Use subprocess with shell=False and a list of args. Never eval user input.
aider/editor.py:134
low Security checks quality Error handling conf 0.55 ✓ Repobility 15 occurrences Broad exception handler needs review
This handler catches Exception/BaseException. It is actionable when it swallows errors without logging, re-raising, or returning a structured error. Handlers that intentionally convert exceptions into typed error results should not be treated as high risk.
12 files, 15 locations
aider/__init__.py:8, 17 (2 hits)
aider/io.py:140, 1099 (2 hits)
aider/repomap.py:287, 349 (2 hits)
aider/coders/base_coder.py:2038
aider/history.py:120
aider/linter.py:216
aider/main.py:1267
aider/models.py:256
Error handlingquality
medium Security checks quality Quality conf 0.74 4 occurrences Critical user action appears to be handled by a no-op or placeholder
Wire the action to a real backend mutation or remove/disable the control until it is implemented. Add an end-to-end or integration test that performs the action and observes persisted state.
lines 305, 309, 318, 323
aider/website/_includes/recording.js:305, 309, 318, 323 (4 hits)
high Security checks cicd CI/CD security conf 0.82 Docker final stage has no non-root USER
Add a non-root USER in the final runtime stage after files and permissions are prepared.
scripts/Dockerfile.jekyll:2 CI/CD securitycontainers
high Security checks cicd CI/CD security conf 0.82 Docker final stage has no non-root USER
Add a non-root USER in the final runtime stage after files and permissions are prepared.
benchmark/Dockerfile:1 CI/CD securitycontainers
medium Security checks cicd CI/CD security conf 0.84 Dockerfile ADD downloads remote content
Use curl/wget with a pinned URL, verify checksum or signature, and prefer COPY for local files.
benchmark/Dockerfile:38 CI/CD securitycontainers
medium Security checks cicd CI/CD security conf 0.76 3 occurrences Dockerfile copies broad context with incomplete .dockerignore
Tighten .dockerignore or replace COPY . with explicit COPY statements.
2 files, 3 locations
docker/Dockerfile:39, 63 (2 hits)
benchmark/Dockerfile:60
CI/CD securitycontainers
medium Security checks quality Quality conf 0.69 Mutation journey appears local-only with no backend write
Move the mutation into a backend/API/server action, handle failure states, and test the full write/read-back path against the real datastore.
aider/website/index.html:469
high Security checks software dependencies conf 0.70 Remote install command pipes network code directly to a shell
Publish a package-manager install path or add checksum/signature verification before execution. For docs, show the inspect-then-run flow and pin the downloaded artifact version.
aider/website/docs/install.md:36
high Security checks software dependencies conf 0.70 Remote install command pipes network code directly to a shell
Publish a package-manager install path or add checksum/signature verification before execution. For docs, show the inspect-then-run flow and pin the downloaded artifact version.
aider/website/_posts/2025-01-15-uv.md:25
medium Security checks quality Quality conf 0.72 Runtime environment contract is missing referenced variables
Add every required runtime variable to .env.example or deployment docs with safe placeholder values, then verify CI/deploy bootstraps from that contract.
scripts/issues.py:67
medium Security checks quality Quality conf 0.76 5 occurrences Shipping source still contains a stub implementation
Replace the stub with real behavior, or remove the route/module from the active product surface until it is implemented and covered by a test.
5 files, 5 locations
aider/coders/base_coder.py:1624
aider/coders/context_coder.py:51
aider/coders/help_coder.py:14
aider/gui.py:165
aider/repomap.py:223
medium System graph quality Integrity conf 1.00 `fetch()` without try/.catch or AbortSignal — aider/website/assets/asciinema/asciinema-player.min.js:1
Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout.
runtime safetyRobustness
medium System graph quality Agent instructions conf 1.00 Agent authority lacks a verifier contract: aider/website/docs/llms/gemini.md
This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes.
aider/website/docs/llms/gemini.md VerificationGemini instruction
medium System graph security Trivy conf 1.00 AWS-0178: VPC Flow Logs is a feature that enables you to capture information about the IP traffic going to and from network interfaces in your VPC. After you've created a flow log, you can view and retrieve its data in Amazon CloudWatch Logs. It is recommended that VPC Flow Logs be enabled for packet "Rejects" for VPCs. — tests/fixtures/languages/hcl/test.tf
VPC Flow Logs is a feature that enables you to capture information about the IP traffic going to and from network interfaces in your VPC. After you've created a flow log, you can view and retrieve its data in Amazon CloudWatch Logs. It is recommended that VPC Flow Logs be enabled for packet "Reject…
Misconfig
medium System graph quality Placeholder conf 1.00 Critical user flow still appears backed by mock or placeholder data
A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded.
Mock dataCritical flowGenerated repo pattern
medium System graph security Trivy conf 1.00 CVE-2025-69872: diskcache 5.6.3 — requirements.txt
python-diskcache: python-diskcache: Arbitrary code execution via insecure pickle deserialization DiskCache (python-diskcache) through 5.6.3 uses Python pickle for serialization by default. An attacker with write access to the cache directory can achieve arbitrary code execution when a victim appli…
VulnCve 2025 69872
medium System graph security Trivy conf 1.00 CVE-2026-22815: aiohttp 3.13.3 — requirements.txt
aiohttp: AIOHTTP: Denial of Service via insufficient header/trailer handling AIOHTTP is an asynchronous HTTP client/server framework for asyncio and Python. Prior to version 3.13.4, insufficient restrictions in header/trailer handling could cause uncapped memory usage. This issue has been patched …
VulnCve 2026 22815
medium System graph security Trivy conf 1.00 CVE-2026-25645: requests 2.32.5 — requirements.txt
requests: Requests: Security bypass due to predictable temporary file creation Requests is a HTTP library. Prior to version 2.33.0, the `requests.utils.extract_zipped_paths()` utility function uses a predictable filename when extracting files from zip archives into the system temporary directory. …
VulnCve 2026 25645
medium System graph security Trivy conf 1.00 CVE-2026-34515: aiohttp 3.13.3 — requirements.txt
aiohttp: AIOHTTP: Information disclosure via static resource handler on Windows AIOHTTP is an asynchronous HTTP client/server framework for asyncio and Python. Prior to version 3.13.4, on Windows the static resource handler may expose information about a NTLMv2 remote path. This issue has been pat…
VulnCve 2026 34515
medium System graph security Trivy conf 1.00 CVE-2026-34516: aiohttp 3.13.3 — requirements.txt
aiohttp: AIOHTTP: Denial of Service via excessive multipart headers AIOHTTP is an asynchronous HTTP client/server framework for asyncio and Python. Prior to version 3.13.4, a response with an excessive number of multipart headers may be allowed to use more memory than intended, potentially allowin…
VulnCve 2026 34516
medium System graph security Trivy conf 1.00 CVE-2026-34525: aiohttp 3.13.3 — requirements.txt
aiohttp: aiohttp: Security bypass via multiple Host headers AIOHTTP is an asynchronous HTTP client/server framework for asyncio and Python. Prior to version 3.13.4, multiple Host headers were allowed in aiohttp. This issue has been patched in version 3.13.4. Package: aiohttp Installed: 3.13.3 Fix…
VulnCve 2026 34525
medium System graph security Trivy conf 1.00 CVE-2026-34993: aiohttp 3.13.3 — requirements.txt
aiohttp: AIOHTTP: Arbitrary code execution via untrusted input to CookieJar.load() AIOHTTP is an asynchronous HTTP client/server framework for asyncio and Python. Prior to version 3.14.0, using ``CookieJar.load()`` with untrusted input may allow arbitrary code execution. Most applications using th…
VulnCve 2026 34993
medium System graph security Trivy conf 1.00 CVE-2026-42308: pillow 12.1.1 — requirements.txt
Pillow: python: Pillow: Denial of Service via integer overflow in font processing Pillow is a Python imaging library. Prior to version 12.2.0, if a font advances for each glyph by an exceeding large amount, when Pillow keeps track of the current position, it may lead to an integer overflow. This i…
VulnCve 2026 42308
medium System graph security Trivy conf 1.00 CVE-2026-42309: pillow 12.1.1 — requirements.txt
Pillow: Pillow: Denial of Service via specially crafted coordinate input Pillow is a Python imaging library. From version 11.2.1 to before version 12.2.0, passing nested lists as coordinates to APIs that accept coordinates such as ImagePath.Path, ImageDraw.ImageDraw.polygon and ImageDraw.ImageDraw…
VulnCve 2026 42309
medium System graph security Trivy conf 1.00 CVE-2026-42310: pillow 12.1.1 — requirements.txt
Pillow: Pillow: Denial of Service via malicious PDF processing Pillow is a Python imaging library. From version 4.2.0 to before version 12.2.0, an attacker can supply a malicious PDF that causes the process to hang indefinitely, consuming 100% CPU and making the application unresponsive. This issu…
VulnCve 2026 42310
medium System graph security Trivy conf 1.00 CVE-2026-45409: idna 3.11 — requirements.txt
Internationalized Domain Names in Applications (IDNA) for Python provi ... Internationalized Domain Names in Applications (IDNA) for Python provides support for Internationalized Domain Names in Applications (IDNA) and Unicode IDNA Compatibility Processing. In versions prior to 3.15, payloads such…
VulnCve 2026 45409
medium System graph security Trivy conf 1.00 CVE-2026-47265: aiohttp 3.13.3 — requirements.txt
python-aiohttp: AIOHTTP: Information disclosure via improper handling of cookies during cross-origin redirects AIOHTTP is an asynchronous HTTP client/server framework for asyncio and Python. Prior to version 3.14.0, cookies set with the `cookies` parameter on requests are sent after following a cr…
VulnCve 2026 47265
medium System graph security Trivy conf 1.00 CVE-2026-48710: starlette 0.52.1 — requirements.txt
starlette: Starlette: Security restriction bypass via malformed HTTP Host header Starlette is a lightweight ASGI framework/toolkit. Prior to version 1.0.1, the HTTP `Host` request header was not validated before being used to reconstruct `request.url`. Because the routing algorithm relies on the r…
VulnCve 2026 48710
medium System graph security Trivy conf 1.00 CVE-2026-48817: starlette 0.52.1 — requirements.txt
starlette: Starlette: Information disclosure and unintended method execution via non-standard HTTP methods Starlette is a lightweight ASGI framework/toolkit. In versions 1.0.1 and below, when dispatching a request, HTTPEndpoint selects the handler by lowercasing the HTTP method and looking it up a…
VulnCve 2026 48817
medium System graph security Trivy conf 1.00 CVE-2026-54273: aiohttp 3.13.3 — requirements.txt
AIOHTTP is an asynchronous HTTP client/server framework for asyncio an ... AIOHTTP is an asynchronous HTTP client/server framework for asyncio and Python. Prior to 3.14.1, no limit was present on the number of pipelined requests that could be queued. An attacker may be able to use pipelined reques…
VulnCve 2026 54273
medium System graph security Trivy conf 1.00 CVE-2026-54274: aiohttp 3.13.3 — requirements.txt
AIOHTTP is an asynchronous HTTP client/server framework for asyncio an ... AIOHTTP is an asynchronous HTTP client/server framework for asyncio and Python. Prior to 3.14.1, if an attacker sends large incomplete websocket frame payloads, it may be possible to bypass the usual size limits on memory u…
VulnCve 2026 54274
medium System graph security Trivy conf 1.00 CVE-2026-54276: aiohttp 3.13.3 — requirements.txt
aiohttp: aiohttp: Information disclosure via DigestAuthMiddleware after cross-origin redirect AIOHTTP is an asynchronous HTTP client/server framework for asyncio and Python. Prior to 3.14.1, DigestAuthMiddleware can send an authentication response after following a cross-origin redirect. This like…
VulnCve 2026 54276
medium System graph security Trivy conf 1.00 CVE-2026-54277: aiohttp 3.13.3 — requirements.txt
AIOHTTP is an asynchronous HTTP client/server framework for asyncio an ... AIOHTTP is an asynchronous HTTP client/server framework for asyncio and Python. Prior to 3.14.1, it is possible to bypass the max_line_size check in parts of an HTTP request in the C parser. If using the optimised C parser …
VulnCve 2026 54277
medium System graph security Trivy conf 1.00 CVE-2026-54278: aiohttp 3.13.3 — requirements.txt
AIOHTTP is an asynchronous HTTP client/server framework for asyncio an ... AIOHTTP is an asynchronous HTTP client/server framework for asyncio and Python. Prior to 3.14.1, during cleanup it is possible for a compressed request body to be decompressed into memory in one chunk. An attacker may be ab…
VulnCve 2026 54278
medium System graph hardware Supply chain conf 1.00 Dockerfile ADD downloads remote content without checksum
Remote build inputs can change or be replaced upstream. Use Dockerfile ADD --checksum or download with an explicit digest/signature verification step.
benchmark/Dockerfile:38 containersChecksum
medium System graph hardware Security conf 1.00 Dockerfile runs as root: benchmark/Dockerfile
No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image.
Container
medium System graph security Trivy conf 1.00 DS-0001: ':latest' tag used — scripts/Dockerfile.jekyll
':latest' tag used Specify a tag in the 'FROM' statement for image 'bretfisher/jekyll-serve' Rule: DS-0001 Severity: MEDIUM Target: scripts/Dockerfile.jekyll
Misconfig
medium System graph security Trivy conf 1.00 DS-0013: 'RUN cd ...' to change directory — benchmark/Dockerfile
'RUN cd ...' to change directory RUN should not be used to change directory: 'curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && apt-get install -y nodejs && rm -rf /var/lib/apt/lists/* && mkdir -p /npm-install && cd /npm-install && npm init -y && npm install …
Misconfig
medium System graph cicd CI/CD security conf 1.00 16 occurrences GitHub Action is tag-pinned rather than SHA-pinned
docker/setup-qemu-action@v3 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA.
4 files, 16 locations
.github/workflows/docker-build-test.yml:33, 36, 40, 47, 57, 68, 78 (7 hits)
.github/workflows/docker-release.yml:19, 22, 25, 31, 43 (5 hits)
.github/workflows/pages.yml:44 (2 hits)
.github/workflows/pre-commit.yml:30 (2 hits)
CI/CD securitySupply chainGitHub Actions
medium System graph cicd CI/CD security conf 1.00 GitHub Actions workflow grants broad write permissions
CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions.
.github/workflows/pages.yml CI/CD securitySupply chainGithub actions
medium System graph security Semgrep conf 1.00 insecure hash algorithm sha1 — aider/coders/base_coder.py:1874
Detected SHA1 hash algorithm which is considered insecure. SHA1 is not collision resistant and is therefore not suitable as a cryptographic signature. Use SHA256 or SHA3 instead. Rule: python.lang.security.insecure-hash-algorithms.insecure-hash-algorithm-sha1 Severity: WARNING OWASP: A03:2017 - Se…
SecurityPython
medium System graph security Semgrep conf 1.00 insecure hash algorithm sha1 — aider/models.py:1019
Detected SHA1 hash algorithm which is considered insecure. SHA1 is not collision resistant and is therefore not suitable as a cryptographic signature. Use SHA256 or SHA3 instead. Rule: python.lang.security.insecure-hash-algorithms.insecure-hash-algorithm-sha1 Severity: WARNING OWASP: A03:2017 - Se…
SecurityPython
medium System graph security security conf 1.00 Insecure pattern 'direct_innerhtml_assignment' in aider/website/assets/asciinema/asciinema-player.min.js:1
Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible.
aider/website/assets/asciinema/asciinema-player.min.js:1 Direct innerhtml assignment
medium System graph security security conf 1.00 Insecure pattern 'direct_innerhtml_assignment' in aider/website/index.html:487
Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible.
aider/website/index.html:487 Direct innerhtml assignment
medium System graph quality Integrity conf 1.00 Network/subprocess call without timeout or try/except — aider/models.py:966
`requests.get(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries.
runtime safetyRobustness
medium System graph quality Integrity conf 1.00 Network/subprocess call without timeout or try/except — aider/run_cmd.py:62
`subprocess.Popen(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries.
runtime safetyRobustness
medium System graph quality Integrity conf 1.00 Network/subprocess call without timeout or try/except — benchmark/rungrid.py:56
`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries.
runtime safetyRobustness
medium System graph quality Integrity conf 1.00 Network/subprocess call without timeout or try/except — scripts/blame.py:84
`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries.
runtime safetyRobustness
medium System graph quality Integrity conf 1.00 Network/subprocess call without timeout or try/except — scripts/dl_icons.py:33
`requests.get(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries.
runtime safetyRobustness
medium System graph quality Integrity conf 1.00 Network/subprocess call without timeout or try/except — scripts/issues.py:16
`requests.get(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries.
runtime safetyRobustness
medium System graph quality Integrity conf 1.00 Network/subprocess call without timeout or try/except — scripts/update-history.py:36
`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries.
runtime safetyRobustness
medium System graph quality Integrity conf 1.00 Network/subprocess call without timeout or try/except — scripts/versionbump.py:15
`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries.
runtime safetyRobustness
medium System graph quality Integrity conf 1.00 Network/subprocess call without timeout or try/except — scripts/yank-old-versions.py:8
`requests.get(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries.
runtime safetyRobustness
medium System graph quality Placeholder conf 1.00 Placeholder or mock-heavy implementation detected
Found 48 placeholder/mock markers across 11 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data.
Mock dataIncompleteGenerated repo pattern
medium System graph network Security conf 1.00 Privileged port 10 in use
Port 10 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer.
aider/website/_data/blame.yml Ports
medium System graph network Security conf 1.00 Privileged port 12 in use
Port 12 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer.
aider/website/_data/blame.yml Ports
medium System graph network Security conf 1.00 Privileged port 15 in use
Port 15 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer.
aider/website/_data/blame.yml Ports
medium System graph network Security conf 1.00 Privileged port 16 in use
Port 16 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer.
aider/website/_data/blame.yml Ports
medium System graph network Security conf 1.00 Privileged port 179 in use
Port 179 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer.
aider/website/_data/blame.yml Ports
medium System graph network Security conf 1.00 Privileged port 18 in use
Port 18 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer.
aider/website/_data/blame.yml Ports
medium System graph network Security conf 1.00 Privileged port 197 in use
Port 197 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer.
aider/website/_data/blame.yml Ports
medium System graph network Security conf 1.00 Privileged port 52 in use
Port 52 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer.
aider/website/_data/blame.yml Ports
medium System graph network Security conf 1.00 Privileged port 54 in use
Port 54 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer.
aider/website/_data/blame.yml Ports
medium System graph network Security conf 1.00 Privileged port 69 in use
Port 69 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer.
aider/website/_data/blame.yml Ports
medium System graph security Semgrep conf 1.00 var in href — aider/website/_layouts/redirect.html:9
Detected a template variable used in an anchor tag with the 'href' attribute. This allows a malicious actor to input the 'javascript:' URI and is subject to cross- site scripting (XSS) attacks. If using Flask, use 'url_for()' to safely generate a URL. If using Django, use the 'url' filter to safely…
SecurityHtml templates
medium System graph security Semgrep conf 1.00 var in href — aider/website/blog/index.html:13
Detected a template variable used in an anchor tag with the 'href' attribute. This allows a malicious actor to input the 'javascript:' URI and is subject to cross- site scripting (XSS) attacks. If using Flask, use 'url_for()' to safely generate a URL. If using Django, use the 'url' filter to safely…
SecurityHtml templates
medium System graph security Semgrep conf 1.00 var in href — aider/website/blog/index.html:22
Detected a template variable used in an anchor tag with the 'href' attribute. This allows a malicious actor to input the 'javascript:' URI and is subject to cross- site scripting (XSS) attacks. If using Flask, use 'url_for()' to safely generate a URL. If using Django, use the 'url' filter to safely…
SecurityHtml templates
low Security checks cicd CI/CD security conf 0.72 .dockerignore misses sensitive defaults
Add missing patterns such as .env, .git, private keys, certificates, dependency folders, and local databases.
.dockerignore CI/CD securitycontainers
low Security checks software Race condition conf 1.00 [SEC124] TOCTOU file access (os.access then open): Check-then-use file pattern (access/exists then open) lets an attacker swap the file between check and use (symlink attack). `mktemp` is deprecated for the same reason.
Use `os.open(path, os.O_CREAT | os.O_EXCL | os.O_WRONLY)` for atomic create-only. Use `tempfile.NamedTemporaryFile()` (not `mktemp`). For locking, use `fcntl.flock`.
aider/voice.py:119
low Security checks cicd CI/CD security conf 0.72 3 occurrences Dockerfile installs recommended OS packages
Add `--no-install-recommends` and explicitly list only packages the image needs.
2 files, 3 locations
benchmark/Dockerfile:4, 43 (2 hits)
scripts/Dockerfile.jekyll:10
CI/CD securitycontainers
low Security checks cicd CI/CD security conf 0.74 Dockerfile leaves apt package indexes in the image layer
End the apt install layer with `rm -rf /var/lib/apt/lists/*`.
scripts/Dockerfile.jekyll:10 CI/CD securitycontainers
low Security checks quality Quality conf 0.60 6 occurrences Duplicated implementation block across source files
Duplicate implementation blocks are maintenance debt. Keep them visible, but they are not a high-severity defect unless the duplicated logic is security-sensitive or drifting.
6 files, 6 locations
aider/coders/ask_prompts.py:12
aider/coders/context_prompts.py:29
aider/coders/editblock_prompts.py:21
aider/coders/wholefile_func_coder.py:73
aider/website/_includes/code-in-json-syntax.js:27
aider/website/_includes/qwq-chart.js:5
duplicationquality
low Security checks cicd CI/CD security conf 0.90 ✓ Repobility 42 occurrences GitHub Action is tag-pinned rather than SHA-pinned
[MINED115] Action `actions/setup-python` pinned to mutable ref `@v5`: `uses: actions/setup-python@v5` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly affect many repos. Treat official first-par…
10 files, 42 locations
.github/workflows/pages.yml:40, 52, 59, 73, 76 (10 hits)
.github/workflows/pre-commit.yml:16, 18, 35, 41 (5 hits)
.github/workflows/check_pypi_version.yml:22, 53 (4 hits)
.github/workflows/release.yml:14, 19 (4 hits)
.github/workflows/ubuntu-tests.yml:32, 37 (4 hits)
.github/workflows/windows-tests.yml:32, 37 (4 hits)
.github/workflows/windows_check_pypi_version.yml:25, 56 (4 hits)
.github/workflows/issues.yml:14, 17 (3 hits)
CI/CD securitySupply chainGitHub Actions
low System graph security Trivy conf 1.00 CVE-2026-34513: aiohttp 3.13.3 — requirements.txt
aiohttp: AIOHTTP: Denial of Service due to unbounded DNS cache AIOHTTP is an asynchronous HTTP client/server framework for asyncio and Python. Prior to version 3.13.4, an unbounded DNS cache could result in excessive memory usage possibly resulting in a DoS situation. This issue has been patched i…
VulnCve 2026 34513
low System graph security Trivy conf 1.00 CVE-2026-34514: aiohttp 3.13.3 — requirements.txt
aiohttp: AIOHTTP: Header Injection via content_type parameter manipulation AIOHTTP is an asynchronous HTTP client/server framework for asyncio and Python. Prior to version 3.13.4, an attacker who controls the content_type parameter in aiohttp could use this to inject extra headers or similar explo…
VulnCve 2026 34514
low System graph security Trivy conf 1.00 CVE-2026-34517: aiohttp 3.13.3 — requirements.txt
aiohttp: AIOHTTP: Denial of Service via large multipart form fields AIOHTTP is an asynchronous HTTP client/server framework for asyncio and Python. Prior to version 3.13.4, for some multipart form fields, aiohttp read the entire field into memory before checking client_max_size. This issue has bee…
VulnCve 2026 34517
low System graph security Trivy conf 1.00 CVE-2026-34518: aiohttp 3.13.3 — requirements.txt
aiohttp: AIOHTTP: Information disclosure via retained Cookie and Proxy-Authorization headers during redirects AIOHTTP is an asynchronous HTTP client/server framework for asyncio and Python. Prior to version 3.13.4, when following redirects to a different origin, aiohttp drops the Authorization hea…
VulnCve 2026 34518
low System graph security Trivy conf 1.00 CVE-2026-34519: aiohttp 3.13.3 — requirements.txt
aiohttp: aiohttp: Header injection vulnerability via reason parameter AIOHTTP is an asynchronous HTTP client/server framework for asyncio and Python. Prior to version 3.13.4, an attacker who controls the reason parameter when creating a Response may be able to inject extra headers or similar explo…
VulnCve 2026 34519
low System graph security Trivy conf 1.00 CVE-2026-34520: aiohttp 3.13.3 — requirements.txt
aiohttp: AIOHTTP: Header injection vulnerability due to improper character handling AIOHTTP is an asynchronous HTTP client/server framework for asyncio and Python. Prior to version 3.13.4, the C parser (the default for most installs) accepted null bytes and control characters in response headers. …
VulnCve 2026 34520
low System graph security Trivy conf 1.00 CVE-2026-4539: pygments 2.19.2 — requirements.txt
pygments: Pygments: Denial of Service via inefficient regular expression processing in AdlLexer A security flaw has been discovered in pygments up to 2.19.2. The impacted element is the function AdlLexer of the file pygments/lexers/archetype.py. The manipulation results in inefficient regular expr…
VulnCve 2026 4539
low System graph security Trivy conf 1.00 CVE-2026-50269: aiohttp 3.13.3 — requirements.txt
AIOHTTP is an asynchronous HTTP client/server framework for asyncio an ... AIOHTTP is an asynchronous HTTP client/server framework for asyncio and Python. Prior to 3.14.0, attacker-controlled input included into multipart/payload headers can be used to modify a request to inject additional headers…
VulnCve 2026 50269
low System graph security Trivy conf 1.00 CVE-2026-54275: aiohttp 3.13.3 — requirements.txt
AIOHTTP is an asynchronous HTTP client/server framework for asyncio an ... AIOHTTP is an asynchronous HTTP client/server framework for asyncio and Python. Prior to 3.14.1, the server_hostname TLS SNI check can be bypassed when an existing connection is reused. If an application makes multiple requ…
VulnCve 2026 54275
low System graph security Trivy conf 1.00 CVE-2026-54279: aiohttp 3.13.3 — requirements.txt
AIOHTTP is an asynchronous HTTP client/server framework for asyncio an ... AIOHTTP is an asynchronous HTTP client/server framework for asyncio and Python. Prior to 3.14.1, host-only cookies that are saved with CookieJar.save() and then restored later with CookieJar.load() lose their host-only stat…
VulnCve 2026 54279
low System graph security Trivy conf 1.00 CVE-2026-54280: aiohttp 3.13.3 — requirements.txt
AIOHTTP is an asynchronous HTTP client/server framework for asyncio an ... AIOHTTP is an asynchronous HTTP client/server framework for asyncio and Python. Prior to 3.14.1, payload resources are not closed correctly when a client disconnects in the middle of a write. If a payload is using an open f…
VulnCve 2026 54280
low System graph security Trivy conf 1.00 CVE-2026-54282: starlette 0.52.1 — requirements.txt
Starlette is a lightweight ASGI framework/toolkit. Prior to 1.3.0, the ... Starlette is a lightweight ASGI framework/toolkit. Prior to 1.3.0, the HTTP request path is not validated before being used to reconstruct request.url. Because request.url is rebuilt by concatenating {scheme}://{host}{path}…
VulnCve 2026 54282
low System graph quality Debug conf 1.00 Debug logging residue appears in source files
Found 433 console/debugger/print-style debug statements in non-test source. This is a common fast-generation residue before production cleanup.
CleanupRepo hardeningGenerated repo pattern
low System graph hardware Supply chain conf 1.00 Docker base image is tag-pinned but not digest-pinned: buildpack-deps:jammy
Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter.
benchmark/Dockerfile:1 containersPinned dependencies
low System graph hardware Supply chain conf 1.00 Docker base image is tag-pinned but not digest-pinned: python:3.12-slim-bookworm
Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter.
docker/Dockerfile:1 containersPinned dependencies
low System graph security Trivy conf 1.00 DS-0026: No HEALTHCHECK defined — benchmark/Dockerfile
No HEALTHCHECK defined Add HEALTHCHECK instruction in your Dockerfile Rule: DS-0026 Severity: LOW Target: benchmark/Dockerfile
Misconfig
low System graph security Trivy conf 1.00 DS-0026: No HEALTHCHECK defined — docker/Dockerfile
No HEALTHCHECK defined Add HEALTHCHECK instruction in your Dockerfile Rule: DS-0026 Severity: LOW Target: docker/Dockerfile
Misconfig
low System graph security Trivy conf 1.00 DS-0026: No HEALTHCHECK defined — scripts/Dockerfile.jekyll
No HEALTHCHECK defined Add HEALTHCHECK instruction in your Dockerfile Rule: DS-0026 Severity: LOW Target: scripts/Dockerfile.jekyll
Misconfig
low System graph quality Integrity conf 1.00 15 occurrences Near-duplicate function bodies in 2 places
Functions with the same first-5-line body hash: benchmark/over_time.py:plot_model_series, benchmark/over_time.py:plot This is *the* AI-coder failure mode (4× more duplication in vibe-coded repos — see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate.
15 occurrences
repo-level (15 hits)
duplicatesduplication
low System graph quality Integrity conf 1.00 2 occurrences Near-duplicate function bodies in 3 places
Functions with the same first-5-line body hash: aider/args_formatter.py:start_section, aider/args_formatter.py:start_section, aider/args_formatter.py:start_section This is *the* AI-coder failure mode (4× more duplication in vibe-coded repos — see https://jw.hn/ai-code-hygiene). Consolidate or docu…
2 occurrences
repo-level (2 hits)
duplicatesduplication
low System graph quality Integrity conf 1.00 Old/deprecated-named symbol `cmd_copy` in aider/commands.py:1528
Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version.
old markerDead code
low System graph quality Integrity conf 1.00 Old/deprecated-named symbol `litellm_entry_copy` in scripts/clean_metadata.py:186
Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version.
old markerDead code
low System graph quality Integrity conf 1.00 Old/deprecated-named symbol `test_cmd_copy` in tests/basic/test_commands.py:50
Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version.
old markerDead code
low System graph quality Integrity conf 1.00 Old/deprecated-named symbol `TestDeprecated` in tests/basic/test_deprecated.py:13
Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version.
old markerDead code
low System graph software Dead code conf 1.00 Possibly dead Python function: cmd_architect
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
aider/commands.py:1190
low System graph software Dead code conf 1.00 Possibly dead Python function: cmd_clear
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
aider/commands.py:411
low System graph software Dead code conf 1.00 Possibly dead Python function: cmd_context
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
aider/commands.py:1194
low System graph software Dead code conf 1.00 Possibly dead Python function: cmd_ls
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
aider/commands.py:1064
low System graph software Dead code conf 1.00 Possibly dead Python function: cmd_map
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
aider/commands.py:1418
low System graph software Dead code conf 1.00 Possibly dead Python function: cmd_map_refresh
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
aider/commands.py:1426
low System graph software Dead code conf 1.00 Possibly dead Python function: cmd_models
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
aider/commands.py:209
low System graph software Dead code conf 1.00 Possibly dead Python function: cmd_ok
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
aider/commands.py:1198
low System graph software Dead code conf 1.00 Possibly dead Python function: cmd_paste
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
aider/commands.py:1278
low System graph software Dead code conf 1.00 Possibly dead Python function: cmd_quit
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
aider/commands.py:1060
low System graph software Dead code conf 1.00 Possibly dead Python function: cmd_settings
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
aider/commands.py:1432
low System graph software Dead code conf 1.00 Possibly dead Python function: cmd_voice
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
aider/commands.py:1252
low System graph software Dead code conf 1.00 Possibly dead Python function: completions_architect
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
aider/commands.py:1176
low System graph software Dead code conf 1.00 Possibly dead Python function: completions_ask
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
aider/commands.py:1170
low System graph software Dead code conf 1.00 Possibly dead Python function: completions_code
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
aider/commands.py:1173
low System graph software Dead code conf 1.00 Possibly dead Python function: completions_context
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
aider/commands.py:1179
low System graph software Dead code conf 1.00 Possibly dead Python function: completions_drop
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
aider/commands.py:905
low System graph software Dead code conf 1.00 Possibly dead Python function: completions_model
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
aider/commands.py:205
low System graph software Dead code conf 1.00 Possibly dead Python function: format_html_table
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
scripts/my_models.py:53
low System graph software Dead code conf 1.00 Possibly dead Python function: plot_outcomes
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
benchmark/plots.py:62
low System graph software Dead code conf 1.00 Possibly dead Python function: plot_outcomes_claude
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
benchmark/plots.py:170
low System graph software Dead code conf 1.00 Possibly dead Python function: plot_timing
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
benchmark/plots.py:8
low System graph software Dead code conf 1.00 Possibly dead Python function: verify_refactor
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
benchmark/refactor_tools.py:62
low System graph software Dead code conf 1.00 Possibly dead Python function: visit_ClassDef
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
benchmark/refactor_tools.py:107
low System graph software Dead code conf 1.00 Possibly dead Python function: visit_FunctionDef
No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler.
benchmark/refactor_tools.py:82
low System graph quality Provenance conf 1.00 Shallow git history limits provenance confidence
The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence.
Git historyGenerated repo pattern
low System graph frontend Frontend quality conf 1.00 Stray `console.log` in TS/JS — aider/website/_includes/recording.js:235
Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable. Why: Hygiene — easy to leak debug output. Rule id: fq.console-leak
Fq console leak
low System graph frontend Frontend quality conf 1.00 Stray `console.log` in TS/JS — tests/fixtures/languages/typescript/test.ts:2
Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable. Why: Hygiene — easy to leak debug output. Rule id: fq.console-leak
Fq console leak
low System graph frontend Frontend quality conf 1.00 Stray `console.log` in TS/JS — tests/fixtures/sample-code-base/sample.js:44
Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable. Why: Hygiene — easy to leak debug output. Rule id: fq.console-leak
Fq console leak
low System graph quality Integrity conf 1.00 Stub function `apply_edits` (body is just `pass`/`return`) — aider/coders/help_coder.py:15
Likely an AI scaffold that was never filled in. Remove or implement.
Empty handlerDead code
low System graph quality Integrity conf 1.00 Stub function `check_for_file_mentions` (body is just `pass`/`return`) — aider/coders/context_coder.py:52
Likely an AI scaffold that was never filled in. Remove or implement.
Empty handlerDead code
low System graph quality Integrity conf 1.00 Stub function `do_settings_tab` (body is just `pass`/`return`) — aider/gui.py:166
Likely an AI scaffold that was never filled in. Remove or implement.
Empty handlerDead code
low System graph quality Integrity conf 1.00 Stub function `reply_completed` (body is just `pass`/`return`) — aider/coders/base_coder.py:1625
Likely an AI scaffold that was never filled in. Remove or implement.
Empty handlerDead code
low System graph quality Integrity conf 1.00 Stub function `save_tags_cache` (body is just `pass`/`return`) — aider/repomap.py:224
Likely an AI scaffold that was never filled in. Remove or implement.
Empty handlerDead code
low System graph quality Complexity conf 1.00 Very large file: aider/coders/base_coder.py (2485 lines)
Files with >800 lines often hide complexity hotspots and discourage tests.
low System graph quality Complexity conf 1.00 Very large file: aider/commands.py (1712 lines)
Files with >800 lines often hide complexity hotspots and discourage tests.
low System graph quality Complexity conf 1.00 Very large file: aider/website/install.sh (1832 lines)
Files with >800 lines often hide complexity hotspots and discourage tests.
low System graph quality Complexity conf 1.00 Very large file: tests/basic/test_coder.py (1438 lines)
Files with >800 lines often hide complexity hotspots and discourage tests.
low System graph quality Complexity conf 1.00 Very large file: tests/basic/test_commands.py (2226 lines)
Files with >800 lines often hide complexity hotspots and discourage tests.
low System graph quality Complexity conf 1.00 Very large file: tests/basic/test_main.py (1483 lines)
Files with >800 lines often hide complexity hotspots and discourage tests.
For AI agents: Voting guide (TP/FP) MCP manifest Stdio wrapper SARIF Integrate Findings queue Vote TP/FP on findings to calibrate the engine.
For AI agents + API integrations
Email me when this repo regresses
Free. We re-scan periodically; new criticals → your inbox. No signup required for the scan itself.
API access

This page is publicly accessible at: https://repobility.com/scan/bb1efda6-8d6f-4283-bc3a-3a3821e68b71/

To check status programmatically (no auth required):

curl -s https://repobility.com/api/v1/public/scan/bb1efda6-8d6f-4283-bc3a-3a3821e68b71/

Important — please don't re-submit the same URL repeatedly. The submission endpoint is idempotent: re-submitting the same git URL returns this same scan_token, not a new one. To re-scan this repo, sign up free and use the dashboard.