Research-backed developer blog

Python security, static analysis, and AI code review that developers can actually use

Framework guides, benchmarks, incident-style research, and CI workflows for Python teams that want lower-noise AppSec and better AI-generated code review.

Coverage
14

Articles across Python security, AI code risk, dead code, CI hardening, and workflow changes.

Topics
4

Curated discovery paths so readers can scan by job-to-be-done instead of publish date.

Formats
5

Guides, benchmarks, case studies, comparisons, and research pieces with clear next steps.

Start here

Explore the blog by job, not just by publish date

Use these paths when you already know what you need: compare scanners, review AI-generated code, understand framework-specific signal, or dig into proof-heavy benchmarks.

14 articles

Topic

Format

Framework

Featured article

Start with this article

Comparison • AI Code Security

Best AI Code Security Tools in 2026 Compared

A practical comparison of the AI code security tools teams are actually evaluating in 2026: Claude Security, GitHub Copilot code review, Semgrep, Snyk Code, CodeQL, and Skylos. See which tool fits AI-generated PR review, Python workflows, CI gating, and secure vibe coding.

Why this is worth your time

Useful if you are trying to choose the right security workflow for AI-generated code instead of buying the loudest new category label.

The market is mixing together three different jobs: AI review assistance, traditional SAST, and AI-specific regression detection.

Claude Security and Copilot code review are useful, but neither should be mistaken for a complete repository security workflow on their own.

Semgrep, Snyk, and CodeQL are strong broader AppSec choices; Skylos is strongest when the problem is Python-heavy AI-generated PRs, removed controls, dead code, and local plus CI verification.

April 20, 202614 min read
Read article

Library

Keep exploring

Guide • Python Static AnalysisFlask

Flask Security Scanning: What Static Analysis Actually Catches in 2026

Flask security issues rarely come from Flask itself. They come from the raw Python and library calls Flask apps make around requests, templates, files, and subprocesses.

What you'll get

This completes the Django / FastAPI / Flask framework cluster and gives Python teams a cleaner way to evaluate scanner coverage by framework.

Apr 16, 20268 min
Read
Research • AI Code Security

Slopsquatting in Python: What 205,474 Hallucinated Package Names Mean for Your Supply Chain

LLMs invent Python packages that don't exist. Attackers register them. Academic research shows 43% of hallucinated names recur on every re-run of the same prompt — turning a model quirk into a repeatable attack surface. Here's what the peer-reviewed data says, and how to catch hallucinated imports at PR time.

What you'll get

This is the sharpest current writeup on hallucinated Python imports and why they turn into a repeatable supply-chain problem.

Apr 11, 202610 min
Read
Guide • Developer WorkflowVS Code

`python.linting` Is Deprecated in VS Code: What Python Teams Should Use Now

The old `python.linting.*` settings are deprecated; VS Code now expects dedicated tool extensions.

What you'll get

High-intent migration query with a direct path from editor setup into security scanning.

Mar 21, 20265 min
Read
Case Study • Dead Code Detection

3 Merged PRs: Dead Code We Found in Black, Flagsmith, and pypdf

We ran Skylos on popular open source Python projects, submitted pull requests to remove dead code, and all three were merged by maintainers. Here's what we found, how the LLM verification agent worked, and what the maintainers said.

What you'll get

Proof beats theory. This is the strongest evidence that the dead-code signal survives real maintainer review.

Mar 17, 20265 min
Read
Guide • Python Static AnalysisFastAPI

FastAPI Security Scanning: 8 Vulnerability Patterns Static Analysis Catches

FastAPI's async-first design and Pydantic validation prevent some bugs but introduce others. Here are 8 real vulnerability patterns in FastAPI applications — from SSRF in background tasks to Pydantic validation bypass — and how to detect them with static analysis.

What you'll get

Use this if your team ships async Python APIs and wants concrete FastAPI vulnerability patterns, not generic SAST advice.

Mar 14, 202614 min
Read
Guide • Python Static AnalysisDjango

Django Security Scanning: What Static Analysis Actually Catches in 2026

Django's ORM prevents SQL injection — until your code uses raw(), .extra(), or cursor.execute(). Here are 7 real vulnerability patterns in Django applications, which tools detect each one, and how to test them yourself.

What you'll get

The Django guide is the clearest framework-specific entry point for teams comparing Python security scanners.

Mar 13, 202612 min
Read
Comparison • Python Static Analysis

Best Python Static Analysis Tools Compared: Bandit vs Vulture vs Skylos (2026)

A side-by-side comparison of the three main Python static analysis tools. We ran all three on the same codebase and compared detection rates, false positives, speed, and CI/CD integration — with real output examples.

What you'll get

This is the fastest way to understand where Bandit, Vulture, and Skylos differ before you install anything.

Mar 6, 20267 min
Read
Benchmark • Python Static Analysis

We Scanned 9 Popular Python Libraries for Security and Dead Code. Here's What We Found.

We ran static analysis on FastAPI, Flask, Pydantic, Rich, Requests, httpx, Click, Starlette, and tqdm. The results: 1,800+ security findings, 4,195 quality issues, and 730 pieces of dead code across 9 of the most popular Python packages.

What you'll get

This is the broadest benchmark in the library set and the best top-level proof page for signal and tradeoffs.

Mar 5, 20266 min
Read
Benchmark • Dead Code DetectionFlask

Finding Dead Code in Flask (69k Stars): Skylos vs Vulture Benchmark

We ran Skylos and Vulture on the Flask repository. Skylos found all 7 dead items with 12 false positives. Vulture found 6 but produced 260 false positives. Here's the full breakdown with real output.

What you'll get

This benchmark shows what framework awareness changes on a real Flask codebase instead of a toy example.

Feb 27, 20266 min
Read
Guide • Dead Code Detection

Dead Code in Python Isn't Just Tech Debt — It's a Security Liability

Every unused function in your Python codebase is attack surface you don't need. Here's how dead code creates real security risks, why it gets worse with AI-generated code, and how to detect and remove it systematically.

What you'll get

Start here if you want the strategic reason dead code belongs in an AppSec workflow, not just a cleanup backlog.

Feb 15, 20268 min
Read
Research • AI Code Security

How AI-Generated PRs Are Overwhelming Code Review (and How to Fix It)

AI generates code instantly but humans still review at 10 lines per minute. Here's why the AI PR flood is breaking code review, what the data says about review quality in 2026, and how to automate security and quality gates.

What you'll get

Good starting point if your team’s problem is review overload, not just individual vulnerabilities.

Feb 1, 20265 min
Read
Research • AI Code Security

AI-Generated Python Code Is Shipping Vulnerabilities (2026 Data)

LLMs write code fast but introduce security flaws. Here's why AI-generated Python code fails security checks, the most common vulnerability patterns from Copilot, Claude, and Cursor, and how to detect them with static analysis.

What you'll get

Use this for the broad executive argument that AI-generated Python code needs a security verification layer.

Jan 23, 202610 min
Read
Research • Python Static Analysis

Why Python SAST Tools Drown Teams in False Positives (and What Actually Works)

Static Application Security Testing is supposed to catch vulnerabilities before they ship. In practice, most teams ignore SAST results because 70%+ are false positives. Here's why, and how taint analysis and framework awareness fix it.

What you'll get

Best read for teams trying to understand why SAST noise happens before they compare tools.

Jan 21, 20265 min
Read