Current-Agent behavioral fingerprint

Verify the model behind your AI Agent.

Ask the Agent you are already using to sample its own authenticated model route in fresh sessions, then compare the answer distributions with public references. No key extraction and no environment-model guessing.

Host-managed authentication Independent fresh sessions Paper-inspired JSD
Shortest run prompt01
Open /run
Original direct-install prompt02
Download .skill

Requires Codex CLI and Node.js 20+. Quick mode uses 20 independent ephemeral generations.

verify-current-session — exact demo output
╭────────────────────────────────────────────────────────────────────────────────────╮◈ SKILL SCAN RESULT  verifyllmapi.com  DEMO                                        │
├────────────────────────────────────────────────────────────────────────────────────┤
│                                                                                    │
│    ◆  CONSISTENT                                                                   │
│    BEHAVIOR MATCHES CLAIMED PUBLIC REFERENCE                                       │
│                                                                                    │
├────────────────────────────────────────────────────────────────────────────────────┤ROUTE BINDING                                                                      │
│ Claim        gpt-5.5                                                               │
│ Child route  openai / gpt-5.5                                                      │
│ Model pin    gpt-5.5                                                               │
│ Auth         host-managed; credential read = NO                                    │
│ Isolation    20/20 fresh ephemeral session IDs                                     │
│ Sampling     T=1 host default • reasoning=none • 4 cells × 5                       │
├────────────────────────────────────────────────────────────────────────────────────┤DISTRIBUTION EVIDENCE                                                              │
│  animal-random|en        5/5 valid   mode otter                                   │
│  word-random|en          5/5 valid   mode serendipity                             │
│  animal-random|ru        5/5 valid   mode тигр                                    │
│  animal-random|ar        5/5 valid   mode أسد├────────────────────────────────────────────────────────────────────────────────────┤PUBLIC REFERENCE COMPARISON  Zenodo 10.5281/zenodo.21278557                        │
│ Claim ref    openai/gpt-5.5                                                        │
│ Mean JSD     0.412684    accept ≤ 0.6439                                           │
│ Calibration  11.8% EER • same-data, post-hoc cells • OpenRouter cohort             │
│ Nearest      openai/gpt-5.5  JSD 0.412684                                          │
├────────────────────────────────────────────────────────────────────────────────────┤FINGERPRINT  fp_session_7c10e8a45d2f                                               │
│ 20/20 valid samples • p50 6840 ms • 248420 Codex tokens                            │
│ Behavioral consistency, not cryptographic proof or vendor attestation.╰────────────────────────────────────────────────────────────────────────────────────╯
20 fresh sessionsQuick profile, not one self-report
Credential read: noCodex owns the authenticated route
JSD distributionsPaper-inspired behavioral evidence
Open referenceZenodo provenance is included
How it works

One prompt. Three steps. No credential plumbing.

The Agent reads the run contract, downloads the bundled scanner, and delegates every probe to a clean process using its own existing Codex login.

01

Send the /run prompt

Your Agent opens the machine-readable protocol, downloads the published skill, and reads its safety and verdict contract.

02

Sample its own route

Each short answer comes from a separate codex exec --ephemeral process. Codex reuses the host login; the scanner never receives it.

03

Compare distributions

The scanner normalizes the answers, computes Jensen–Shannon divergence, and prints the exact reference, threshold, calibration, and caveats.

Evidence, not vibes

What actually counts as fingerprint evidence

A model name, JSON schema, or ability to follow instructions is not a fingerprint. The evidence comes from repeated empirical answer distributions.

Independent sampling

Low-entropy animal, word, character, and color probes are repeated in fresh sessions rather than answered as one correlated list.

JSD

Distribution distance

Per-cell categorical distributions are compared over their joint support with base-2 Jensen–Shannon divergence, then averaged.

REF

Named public reference

The report names the OpenRouter-collected Zenodo reference, selected cell budget, threshold, same-data EER, and transport mismatch risk.

Local-first security

The scanner does not need your Agent credential.

Codex is already authenticated, so the simplest safe design is to let Codex make the calls. The scanner checks login status, starts ephemeral processes, and never opens an auth file or scans key variables.

Uses host-managed Codex login and fresh ephemeral session IDs.
Does not read auth files, cookies, browser storage, process memory, or API-key variables.
Deletes its temporary sample directory after local aggregation.
Keeps explicit endpoint/key mode as an opt-in legacy workflow only.
Download the auditable packageSKILL.md, scanner source, metadata, and license included
FAQ

LLM API verification, without overclaiming

Does Verify LLM API read my Codex login token?

No. The scanner invokes the official Codex CLI, which owns its authentication. It checks only the non-secret output of codex login status and refuses API-key arguments in current-session mode.

Can this prove the exact model with 100% certainty?

No. Behavioral distributions can detect inconsistency and drift, but they are not cryptographic proof or vendor attestation. Missing references and unstable routes return INCONCLUSIVE.

What about temperature 1?

The paper uses temperature 1. Codex's official Responses request does not expose a CLI temperature field and omits it; the Responses API default is 1. The report labels this as a host default, not an explicit override.

How many model generations does a check use?

Quick uses 4 cells × 5 samples = 20 fresh generations. Standard uses 40. Paper mode uses 8 cells × 15 samples = 120.

Can I still test a third-party endpoint directly?

Yes. The original OpenAI-compatible and Anthropic endpoint scanner remains bundled, but it runs only when you explicitly supply the base URL, model, protocol, and credential variable name.

Field notes

A fresh Codex instance tests the production /run path.

The acceptance run starts with an empty workspace and only the short Chinese prompt. It must discover the live protocol, download the production skill, reuse Codex authentication, and preserve an honest verdict.

Read the reproducible acceptance testFresh instance · production artifact · complete terminal evidence
Verify before you route

Ask the Agent to test the route it is actually using.

One short prompt, host-managed authentication, and an auditable distribution report.

See the test run