Open source, agent-native

Show me the path,
not the warning.

Lint-Owl is a static analyzer whose result is the data-flow path from an untrusted source to a dangerous sink. It proves that user input actually reaches the exploit, and shows the exact chain.

View on GitHub Try the demo

Run the taint engine yourself.

This box runs a small taint tracer in your browser, built from the same sources, sanitizers, and sinks as the real analyzer. Edit the code and press Scan to see the path it finds.

runs entirely in your browser, same sources, sanitizers, and sinks as the CLI

A finding is a path, not a line number.

Most tools point at a line and say this looks risky. Lint-Owl follows the taint from where it enters to where it detonates.

command-injection
sourceline 4host = request.args.get("host")
flowsline 5cmd = "ping -c 1 " + host
sinkline 6os.system(cmd)

How it differs

Linters

Flag local smells. No data flow across statements, no source-to-sink reasoning.

Semgrep

Matches syntactic patterns. A pattern does not prove the input actually reaches the sink through assignments.

CodeQL

A real dataflow engine, but heavy. Build a database, learn a query language. Overkill for one file.

Lint-Owl

One small binary whose output is the tainted path itself, and an MCP tool an AI asks "does user input reach this exec".

Five vulnerability classes.

Each is a source-and-sink set, so more classes are just data.

command injection SQL injection SSRF path traversal insecure deserialization

Built in Rust, honest about its limits.

Working

Taint engine with provenance, source-to-sink paths

Working

CLI, HTTP API + console, MCP server

Working

Python-subset front end, 5 vuln classes

Next (v0.2)

Sanitizer awareness and control flow

Results are candidate paths a human confirms. No sanitizer or control-flow awareness yet, and that honesty is written into the README.