Back to updates
UpdatedAug 2, 2026

OpenAnt — Updated!

OpenAnt from Knostic is the leading open source LLM-based vulnerability discovery product, helping defenders proactively find verified security flaws while minimizing both false positives and false negatives. Stage 1 detects. Stage 2 attacks. What survives is real.

Share

OpenAnt

OpenAnt

OpenAnt from Knostic is the first open source LLM-based vulnerability discovery product (now called a harness) that helps defenders proactively find verified security flaws while minimizing both false positives and false negatives. Stage 1 detects. Stage 2 attacks. What survives is real.

Do keep in mind that this started as a research project, and as we develop new capabilities, we often release them as beta. We welcome contributions.

Paper

You can find our research paper on building OpenAnt on arXiv: OpenAnt: LLM-Powered Vulnerability Discovery Through Code Decomposition, Adversarial Verification, and Dynamic Testing, by Nahum Korda and Gadi Evron.

Why open source?

This was a relevant question in the readme when we first released OpenAnt, since, many other harnesses have been released. We still hope that with the explosion of AI-discovered vulnerabilities, OpenAnt will help open source maintainers stay ahead of attackers, where they can use it themselves. Or submit their repo for scanning at no cost.

There is also the fact that Knostic's focus is on protecting agents and coding assistants and not vulnerability research or application security, and we like open source, so we decided to release OpenAnt under the Apache 2 license. Besides, you may have heard about Aardvark from OpenAI (now Codex Security) and Claude Code Security from Anthropic, and we have zero intention of competing with them.

Technical details and free scanning for open source projects

For technical details, limitations, and token costs, check out this blog post: https://knostic.ai/blog/openant

To submit your repo for scanning: https://knostic.ai/blog/oss-scan

Supported languages

  • Go
  • Python
  • C/C++
  • JavaScript/TypeScript (beta)
  • PHP (beta)
  • Ruby (beta)
  • Zig (beta)
  • Swift (beta)
  • Rust (beta)

Credits

Maintainer and research: Gadi Evron

Original research, ideation, and original prototype: Nahum Korda. Original productization: Alex Raihelgaus, Daniel Geyshis.

With thanks to: Michal Kamensky, Imri Goldberg, Daniel Cuthbert. Josh Grossman, and Avi Douglen.

Check out Knostic

If you like our work, check out what we do at Knostic to defend your agents and coding assistants, prevent them from deleting your hard drive and code, and control associated supply chain risks such as MCP servers, extensions, and skills.

Local setup

Build the CLI binary (requires Go 1.25+):

cd apps/openant-cli && make build

This compiles the Go source and outputs the binary to apps/openant-cli/bin/openant.

Symlink it onto your PATH so you can run openant from anywhere:

ln -sf "$(pwd)/apps/openant-cli/bin/openant" /usr/local/bin/openant

Note: run this from the repo root so $(pwd) resolves to the correct absolute path.

Setting up an LLM

OpenAnt routes each pipeline phase through a configurable (provider, model) pair. The fastest path is the interactive wizard:

openant setup llm

You name the config (e.g. my-llm), pick a provider per pipeline phase (any of the shipped adapters below), enter its API key once per provider (Bedrock uses the AWS credential chain instead — leave the key blank), and the wizard probes each unique provider+model pair with a 1-token request before writing ~/.config/openant/config.json. Run a scan against it with --llm-config:

openant scan /path/to/repo --llm-config my-llm

Wizard defaults reflect the project's per-phase recommendations (stronger reasoning models for detection / verification / reachability review; lighter models for context, report, and test generation) — override any answer to taste.

Shipped adapters

Provider typeAPI key fromNotes
anthropicconsole.anthropic.comReference adapter. NOT included in Claude Pro / Max subscriptions — separate billing.
openaiplatform.openai.comNOT included in ChatGPT / Codex subscriptions — separate billing.
googleaistudio.google.comNOT included in Gemini Advanced — separate billing.
bedrock— (AWS credential chain)Claude on AWS Bedrock. No api_key: credentials come from AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY env vars or a ~/.aws profile, region from AWS_REGION. Model IDs are inference profiles (us.anthropic.claude-sonnet-4-6, global.anthropic.claude-haiku-4-5-20251001-v1:0, ...) — enable them under "Model access" in the Bedrock console and list them with aws bedrock list-inference-profiles. Offered by openant setup llm (leave the API key blank — AWS credential chain, probe skipped) — full guide: utilities/llm/providers/BEDROCK.md.
openrouteropenrouter.aiGateway to many providers with one key and one prepaid balance (also reads OPENROUTER_API_KEY). Model IDs are vendor/model slugs (anthropic/claude-sonnet-4.6, openai/gpt-4o-mini, ...) — browse them at openrouter.ai/models. Offered by openant setup llm (leave the base URL blank for the OpenRouter default) — full guide: utilities/llm/providers/OPENROUTER.md.
ollama— (local server)Local models via Ollama. No api_key: leave it blank (a placeholder is sent automatically); base URL defaults to http://localhost:11434/v1. Models must be pulled first (ollama pull <model>); model IDs are exactly what ollama list shows. Local inference is free — $0 cost reporting. Offered by openant setup llm — full guide: utilities/llm/providers/OLLAMA.md.

All of them support tool calling, so any of them can drive the enhance and verify phases that use the agentic tool-use loop. For Ollama, pick a tools-capable model for those phases — very small local models may not handle tool calls reliably.

Quick path for Anthropic-only setups

If you want today's per-phase Claude defaults and nothing else, skip the wizard:

openant set-api-key sk-ant-...
openant scan /path/to/repo

This uses the built-in openant-default config (compiled into the binary, no config.json needed) — Claude Opus 4.6 for detection phases, Sonnet 4 for the rest.

Hand-authored config

The wizard writes ~/.config/openant/config.json for you, but you can edit it directly too. Every llm-config must list all seven pipeline phases:

Categories