Source detection
HTTP parameters, headers, cookies, file uploads, environment variables, CLI args, and framework-specific request objects.
Local, deterministic, MCP-native. Trace tainted data across functions, files, and frameworks — from your terminal, your CI, your product, or Claude's tools. No server, no phone-home, no LLM tokens burned per scan.
Traditional scanners match dangerous text. Cognium builds a flow graph, follows values through the program, and only reports when tainted input reaches a sensitive sink without a sanitizer.
HTTP parameters, headers, cookies, file uploads, environment variables, CLI args, and framework-specific request objects.
Flows are followed across function calls, return values, object fields, map keys, array indexes, conditionals, and common framework abstractions.
Prepared statements, HTML escaping, URL validation, framework encoders, and custom YAML definitions reduce noise without hiding risk.
The open-source engine runs without an LLM. Optional model-assisted discovery can be layered on top for deeper research workflows, while the static engine remains deterministic.
Cognium (static) 50.8% 61 / 120 CVEs IRIS + GPT-4 45.8% 55 / 120 CVEs CodeQL 22.5% 27 / 120 CVEs Deterministic, reproducible, no LLM required.
Cognium ships with source, sink, and sanitizer definitions for popular server frameworks, plus YAML configuration for teams adding their own architecture patterns.
SQL injection, command injection, XSS, path traversal, SSRF, deserialization, XXE, LDAP injection, NoSQL injection, response splitting, weak randomness, weak crypto, and more.
The cogniumhq/cognium-dev monorepo ships three npm packages — a CLI, a Node/browser library, and an MCP server — so the same deterministic engine runs from your terminal, inside your product, or as a tool your AI agent can call.
Global install, scan a folder, get SARIF back. The fastest way to try it on your own repo.
npm i -g cognium-dev cognium-dev scan ./src
Embed cognium-dev inside your own product, service, or agent framework — the same engine as the CLI, called programmatically.
import { analyze } from 'cognium-dev';
const r = await analyze(code, 'app.ts', 'ts');
The browser export runs the engine in the browser — power web IDEs, code playgrounds, or client-side review tools without a server.
import { analyze } from
'cognium-dev/browser';
Give Claude, Cursor, or Windsurf a first-class scan tool. One-line install, ten deterministic MCP tools ready to call.
claude mcp add cognium -- \ npx -y @cognium/mcp-server
Drop into any workflow, emit SARIF, upload to code scanning. No hosted server, no service account.
- uses: cogniumhq/cognium-dev/\
packages/cli@latest
Catch obvious taint flows before code leaves the developer's machine.
- id: cognium-dev entry: cognium-dev scan language: system
Findings plug into GitHub / GitLab code scanning, DefectDojo, VS Code SARIF Viewer, and any dashboard that already reads the format.
cognium-dev scan ./src \ --format sarif -o out.sarif
First-party editor extension in development — Problems-panel findings, inline severity, hover explanations. Follow along on GitHub.
# in development # ★ the repo to get notified
@cognium/mcp-server exposes the deterministic cognium-dev pipeline as ten Model Context Protocol tools — scan, taint paths, entry points, sink descriptions, sanitizer checks. The LLM never guesses the engine's state; it calls a tool and gets a grounded answer.
scanFull polyglot SAST on a file or directory. Returns findings, taint flows, cross-file paths.taint_pathsCross-file taint flows, filterable by source, sink, or sink type.explain_findingCWE metadata, remediation, severity, sanitizer suggestions for one finding.list_entry_pointsEvery attacker-reachable handler grouped by framework.list_reachable_sinksSinks of a category that have a real taint flow reaching them.attack_surface_summaryRoll-up: entry points × sinks × cross-file paths + top files by finding count.check_sanitizerDeterministic yes/no on whether a function sanitizes for a given sink category.describe_sinkCWE, remediation, severity, and sanitizer list for a sink category.describe_sourceFramework API patterns treated as a source of a category.find_similarGiven a finding id, return other findings sharing the same rule.{
"mcpServers": {
"cognium": {
"command": "npx",
"args": ["-y", "@cognium/mcp-server"]
}
}
}
Local, in pre-commit hooks, or in CI. SARIF output plugs into GitHub code scanning and every review workflow that already reads the format.
$ npm install -g cognium-dev
$ cognium-dev scan ./src --format sarif -o results.sarif
src/controllers/AuthController.java
[critical] sql_injection CWE-89
tainted data flows from line 12 to line 45
fix: use PreparedStatement with parameters
Found 1 vulnerability in 1 file.
The engine you install with npm is the same one that powers the grounded pipeline on cognium.net. Start OSS — and if you later need higher recall on messy real-world code, the same substrate plus a grounded LLM verdict layer is cognium-ai.
The SAST substrate — deterministic and local.
Substrate + grounded LLM verdict layer.
cognium-dev substrate underneathContribute framework definitions, benchmark cases, editor integrations, and CI examples. MIT licensed and built in the open — jump into the community hub or head straight to Discussions.