Klarion

module
v0.4.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 20, 2026 License: MIT

README


Klarion finds secrets in your code: API keys, passwords and tokens.

It works in two steps:

  1. Find. Fast local checks flag anything that looks like a secret.
  2. Check. An AI model reads each one with the code around it and decides if it is real.

Pattern scanners stop at step 1, so they also flag test values, IDs and hashes. Klarion shows you the real leaks.

$ klarion scan .

services/billing/client.py
  [critical] stripe-secret-key  39:18  sk_l****4bQx
    verdict: secret (confidence 0.96)
    | stripe.api_key = "sk_l****4bQx"

Summary: 1 finding(s) across 1 file(s), 198 suppressed [1204 files scanned in 612ms]

Install

go install github.com/0x1Adi/Klarion/cmd/klarion@latest

Or download a binary from the releases page.

Klarion needs an AI model. Pick one:

Model Setup
Anthropic (default) export ANTHROPIC_API_KEY=...
OpenAI or compatible export OPENAI_API_KEY=... and set provider = "openai"
Local model, nothing leaves your machine Run Ollama and set provider = "ollama"
Your Claude Code login Set provider = "claude-cli"

Settings go in .klarion.toml under [ai]. All options are in the reference.

Use it

What you want How
Scan a folder klarion scan .
Block commits that add a secret klarion protect
Block commits with the pre-commit framework The .pre-commit-config.yaml below
Stop Claude Code from writing a secret /plugin marketplace add 0x1Adi/Klarion then /plugin install klarion@klarion
Stop Cline, Cursor or any MCP agent from writing a secret The MCP server below
Fail pull requests that add a secret The GitHub Action below
Start on a repo that already has findings klarion baseline create, so only new secrets fail
# .github/workflows/secrets.yml
name: secret-scan
on: [push, pull_request]

jobs:
  klarion:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      security-events: write
    steps:
      - uses: actions/checkout@v6
        with:
          fetch-depth: 0
      - uses: 0x1Adi/Klarion@v0.4.3
        with:
          anthropic-api-key: ${{ secrets.ANTHROPIC_API_KEY }}

On a pull request it scans only what the PR adds. It caches the AI answers, so unchanged code costs nothing. Findings show in the job log. On a private repo without GitHub Code Security, add upload-sarif: "false" to skip the Security tab upload. GitLab CI and every option are in the reference.

# .pre-commit-config.yaml
repos:
  - repo: https://github.com/0x1Adi/Klarion
    rev: v0.4.3
    hooks:
      - id: klarion
        stages: [pre-commit]

Without the stages line the hook is off and runs only when you ask for it, with pre-commit run --hook-stage manual klarion. The klarion hook builds Klarion with Go the first time it runs; use id: klarion-system if klarion is already installed. Everyone who commits needs a model set up.

// ~/.cline/mcp.json, or the MCP settings of any other client
{
  "mcpServers": {
    "klarion": {
      "command": "klarion",
      "args": ["mcp"]
    }
  }
}

The agent calls scan_text before it writes code and scan_file before it commits. Approve each call rather than auto-approving the server: scan_file reads any path it is given. With no model configured the server hands each candidate and its decision rules to that agent to judge, so it needs no API key. Configure one and Klarion judges instead. Full steps, including the tools and how to verify the install: llms-install.md.

Results

Klarion found about 1.7× more real secrets than gitleaks, and 89% of its alerts were real (gitleaks: 91%).

We tested Klarion v0.3.0 on CredData: 337 real open source repos where Samsung labeled the lines that hold secrets. These numbers cover code outside test folders.

Klarion gitleaks detect-secrets
Real secrets found 35% 21% 35%
Alerts that were real 89% 91% 34%
False alarms on flask and rails 9 33 247

Good to know:

  • Klarion skips test fixtures and docs examples on purpose. CredData counts those as real. Counted that way, Klarion found 9% and gitleaks 46%.
  • Klarion's numbers come from a sample of 612 AI checks with one model (Claude Haiku). The likely range is 30 to 40% found and 82 to 97% real.
  • CredData's labels came from what other scanners found, which helps those scanners.

Full method and data: benchmark/REPORT.md.

How it works

  • Step 1 runs on your machine. It looks for known key formats, password = value style lines, credential files like .pgpass, and secrets hidden in base64 or hex. It also checks how random a string looks.
  • Step 2 asks the model. Each candidate goes out with a few lines of code. The model answers secret, false positive or uncertain. Uncertain counts as a secret.
  • You can see what was hidden. Run klarion scan . --show-suppressed.
  • Your code goes only to the model you pick. Set send_secret = false to send a masked value instead. It is less accurate.

Limits

  • It needs a model. Without one, klarion scan and the commit hooks stop with an error. The Claude Code hook still blocks provider keys such as AWS, GitHub and Stripe, and the MCP server hands the candidates and its rules to your agent to judge.
  • No API key? A hosted judge with no setup is coming. Join the list.
  • The model can be wrong. Check what it hid with --show-suppressed.
  • It finds secrets, it does not fix them. Rotate any secret it finds.
  • Local hooks can be skipped with git commit --no-verify. Run Klarion in CI too, with the Action. The pre-commit hook checks staged changes only, so in CI it has nothing to check.

More

Reference · Benchmark · Design · Changelog · Contributing · Security

MIT © The Klarion Authors

Directories

Path Synopsis
benchmark
entropy_ab command
Command entropy_ab runs an A/B experiment: for every Stage-2 candidate token in the real benchmark corpus, it scores the token with (a) the SHIPPED normalized order-2 Rényi (collision) score and (b) a fair normalized Shannon (order-1) score, then measures how well each separates real secrets from the high-entropy non-secret strings that trip other scanners.
Command entropy_ab runs an A/B experiment: for every Stage-2 candidate token in the real benchmark corpus, it scores the token with (a) the SHIPPED normalized order-2 Rényi (collision) score and (b) a fair normalized Shannon (order-1) score, then measures how well each separates real secrets from the high-entropy non-secret strings that trip other scanners.
cmd
klarion command
Command klarion is the AI-native secret scanner: a fast Rényi-entropy + curated-rule pass with LLM adjudication of every candidate.
Command klarion is the AI-native secret scanner: a fast Rényi-entropy + curated-rule pass with LLM adjudication of every candidate.
internal
baseline
Package baseline records the set of findings a repository has already accepted, keyed by fingerprint, so that established (known) secrets can be separated from newly introduced ones.
Package baseline records the set of findings a repository has already accepted, keyed by fingerprint, so that established (known) secrets can be separated from newly introduced ones.
config
Package config loads and validates Klarion configuration (.klarion.toml), providing compiled path/secret allowlists and defaults tuned for production scanning.
Package config loads and validates Klarion configuration (.klarion.toml), providing compiled path/secret allowlists and defaults tuned for production scanning.
detect
Package detect implements Klarion's fast detection pass: curated rules for known secret formats, structural stages for credentials with no fixed format (structural.go), decode-and-rescan for encoded material (decode.go), and a normalized Rényi-entropy sweep for generic high-entropy strings.
Package detect implements Klarion's fast detection pass: curated rules for known secret formats, structural stages for credentials with no fixed format (structural.go), decode-and-rescan for encoded material (decode.go), and a normalized Rényi-entropy sweep for generic high-entropy strings.
entropy
Package entropy implements Rényi entropy scoring for secret detection.
Package entropy implements Rényi entropy scoring for secret detection.
finding
Package finding defines the core data types shared by every Klarion component: findings, severities, and AI verification verdicts.
Package finding defines the core data types shared by every Klarion component: findings, severities, and AI verification verdicts.
git
Package git integrates Klarion with the local git repository: staged-file scanning for pre-commit hooks and full-history scanning for audits.
Package git integrates Klarion with the local git repository: staged-file scanning for pre-commit hooks and full-history scanning for audits.
mcp
Package mcp implements a Model Context Protocol server over stdio, exposing Klarion's detection + verification pipeline as tools an AI agent can call before it writes or commits code.
Package mcp implements a Model Context Protocol server over stdio, exposing Klarion's detection + verification pipeline as tools an AI agent can call before it writes or commits code.
report
Package report renders scan results in the formats CI systems and humans consume: a colorless human report, stable JSON, SARIF 2.1.0 (code scanning), JUnit XML (generic CI), and the GitLab Secret Detection schema.
Package report renders scan results in the formats CI systems and humans consume: a colorless human report, stable JSON, SARIF 2.1.0 (code scanning), JUnit XML (generic CI), and the GitLab Secret Detection schema.
rules
Package rules defines Klarion's detection rule model and the built-in curated ruleset (see builtin.go).
Package rules defines Klarion's detection rule model and the built-in curated ruleset (see builtin.go).
scan
Package scan walks a filesystem tree with a bounded worker pool and runs the fast detection pass (internal/detect) over every eligible regular file.
Package scan walks a filesystem tree with a bounded worker pool and runs the fast detection pass (internal/detect) over every eligible regular file.
verify
Package verify implements Klarion's second stage: AI adjudication of candidate findings.
Package verify implements Klarion's second stage: AI adjudication of candidate findings.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL