Skip to content

The model catalogue reports whether a vendor's named credential variable is set and can carry no secret value — the schema has no field one could hide in

A vendor entry may name the environment variable its credential lives in

declared statusdeclared status: guaranteed Declared deterministic and blocking, implemented, and naming the behavioural test that is to prove it. Whether a recorded run supports it is the evidence verdict, shown beside it.

recorded evidencerecorded evidence: not run Declared guaranteed, and not supported by a recorded run: the test is named, and no passing run of the current inputs is recorded. how evidence is recorded

credential_env names an environment variable and only std::env::var_os(..).is_some() is ever consulted; the test walks the catalogue's JSON schema and refuses any property name that smells like a credential.

What it means

A vendor entry may name the environment variable its credential lives in (credential_env: ANTHROPIC_API_KEY), and every listing answers one bit about it: configured or not. No code path reads the variable's value; no field of the catalogue, its schema, or any projection can carry a key, a token or a password — so a leak through the models surface would require a new field to be added first, which is a reviewed change, not an accident.

How it works

Presence is std::env::var_os(name).is_some() and nothing more (apps/majordomus-cli/src/capability/builtin/models.rs); the answer is a boolean beside the vendor. The property is held by a test that walks the catalogue's own JSON schema (apps/majordomus-cli/src/models/mod.rs) and refuses any property name that smells like a credential — so the schema, not a convention, is what cannot hold a secret. test/cases/131_models.sh proves the operator-visible half: setting the named variable flips the report to "configured" and the value appears nowhere in the output.

How to see it

majordomus models list                   # "credential configured" / "not configured"
CASE_KEY=value majordomus models list    # flips the report; the value appears nowhere
cargo test --manifest-path apps/majordomus-cli/Cargo.toml --lib no_field_of_the_catalogue

test/cases/131_models.sh greps a canary credential value out of every rendering and fails if it ever appears.

What it does not cover

It does not manage credentials — no storing, no rotation, no validation that the key actually works. Presence of the named variable is the entire fact, because it is the entire fact this tool can honestly state.

Why it exists

Credential leaks through listings and diagnostics are the classic failure of inventory surfaces. A schema with no field a secret could occupy — held by a test that walks the schema, not a convention — moves the property from "everyone is careful" to "the type system refuses" (ADR 0049).

Detail rendered from docs/claims/models-no-secret-fields.md.

From the statement to the proof

  1. 1 · the public statement

    The model catalogue reports whether a vendor's named credential variable is set and can carry no secret value — the schema has no field one could hide in

    Made on Models.

  2. 2 · the canonical claim

    models-no-secret-fieldsdeclared status: guaranteed in docs/CLAIMS.yaml

    Defined in read it on this site · docs/MODELS.md

  3. 3 · the implementation

    apps/majordomus-cli/src/models/mod.rs

  4. 4 · the test and the scenarios

    Test: test/cases/131_models.sh

  5. 5 · the recorded runs

    recorded evidence: not run how evidence is recorded

Verify it yourself

The test runs in a disposable temporary repository and asserts the behaviour, not a string in the source.

from a clone of the repository
bash test/run.sh 131_models

Related claims same implementation

Searches the titles and descriptions of every page this site publishes.