# anthropic/claude-code-session (Authenticate via Claude Code session)

This example shows how to run Promptfoo evals against the Anthropic Messages
API — including `llm-rubric` model-graded assertions — by reusing an existing
local Claude Code session instead of creating a separate Anthropic Console API
key.

It's meant for Claude Pro / Max subscribers who already use the
[`claude` CLI](https://docs.claude.com/en/docs/claude-code/overview) on the
same machine.

You can run this example with:

```bash
npx promptfoo@latest init --example anthropic/claude-code-session
cd anthropic/claude-code-session
```

## Prerequisites

1. Install and log in to Claude Code:

   ```bash
   claude /login
   ```

   Promptfoo reads the OAuth credential that Claude Code stores in either the
   macOS keychain (`Claude Code-credentials`) or
   `$HOME/.claude/.credentials.json`.

2. Make sure `ANTHROPIC_API_KEY` is **unset** if you specifically want
   Promptfoo to use your Claude Code session. If the env var is set, Promptfoo
   will prefer it over the OAuth credential.

## How it works

The provider config sets `apiKeyRequired: false`, which tells Promptfoo to:

- Skip its upfront API key check.
- Load the Claude Code OAuth credential from the local session.
- Authenticate Messages API requests with a Bearer token plus the
  `claude-code-20250219,oauth-2025-04-20` beta headers.
- Prepend the required Claude Code identity system block
  (`"You are Claude Code, Anthropic's official CLI for Claude."`) before your
  own system prompt.

Requests made this way are expected to count against your Claude
subscription the same way calls from the `claude` CLI do. Check
[Anthropic's documentation](https://docs.claude.com/en/docs/claude-code/overview)
for current billing behavior.

## Run it

```bash
promptfoo eval
promptfoo view
```

## Configuration

See `promptfooconfig.yaml` — both the main provider and the `llm-rubric`
grader point at `anthropic:messages:claude-sonnet-5` with
`apiKeyRequired: false` so the entire eval runs on your Claude subscription.
