# Claude Code Auto Mode Classifier Billing: Why 'This Session Isn't Eligible'

> Claude Code now says auto mode will stop charging for classifier requests, then tells you your session isn't eligible. Nothing is broken, but you may be paying for safety checks other people get free. Who is billed, why a gateway is usually the cause, and the fix.

By Tahir Nazir · Published 2026-10-12 · Updated 2026-10-12
Canonical: https://www.its-tahir.com/blog/claude-code-auto-mode-classifier-billing

**The auto mode classifier billing notice means Anthropic's free, server-side safety checks aren't reaching your session, so the CLI is running its own classifier requests and billing them as token usage, exactly as before. Nothing is broken. The usual cause is an LLM gateway or proxy that drops the safety fields; the fix is to make it pass them through, then start a new session.**

This is the notice, in its two forms:

```text
We're changing auto mode to no longer charge for classifier requests in Claude Code.
However, this session isn't eligible because your requests go through a LiteLLM gateway,
which isn't compatible with this update.
Nothing breaks: auto mode keeps working, and its classifier requests are billed as before.
To fix it and access the new version of auto mode, ask your gateway to implement:
https://code.claude.com/docs/en/auto-mode-classifier-billing
```

```text
We're changing auto mode to no longer charge for classifier requests in Claude Code.
However, this session isn't eligible.
Nothing breaks: auto mode keeps working, and its classifier requests are billed as before.
If this keeps happening, contact support or your company's admin:
https://code.claude.com/docs/en/auto-mode-classifier-billing
```

The first appears when the CLI can tell which gateway sits in the way, and names it. The second appears when it can't.

## What I checked

I downloaded Claude Code 2.1.296, the latest release on npm when I wrote this, and read the notice straight out of the program: both wordings above, the conditions that show it, and the gateway names it can print. Then I checked each point against Anthropic's [billing page](https://code.claude.com/docs/en/auto-mode-classifier-billing), its [permission modes reference](https://code.claude.com/docs/en/permission-modes) and [gateway compatibility guide](https://code.claude.com/docs/en/llm-gateway-protocol), and LiteLLM's [notes on fixing their gateway](https://docs.litellm.ai/blog/claude-code-server-side-auto-mode). I didn't trigger the notice on a live account, so nothing below depends on a bill I've seen.

## Does Claude Code auto mode use more tokens?

Only when the safety check falls back. If Anthropic's server reviews actions inside your normal model requests, Claude Code auto mode adds no separate classifier charge. If Claude Code makes its own classifier requests instead, each check costs extra tokens on Enterprise, Claude API and cloud-provider accounts.

In auto mode, a second model, the classifier, reviews shell commands and network actions before they run, instead of asking you. Reads and edits inside your working directory skip it.

Who pays for those reviews, and what Claude Code auto mode costs you, depends on **where** the check runs:

| Where the check runs | Extra classifier charge? | `/status` → Auto mode server |
| --- | --- | --- |
| Anthropic's server, inside your normal model requests | **No.** There are no separate classifier calls | `Enabled` |
| Claude Code's own classifier requests (the fallback) | **Yes**, on token-billed accounts: Enterprise, Claude API, and the cloud providers | `Disabled` |
| Either, on a Pro, Max or Team plan | No billing notice on these plans | — |

Anthropic's docs describe the fallback's cost plainly: each check *"sends a portion of the transcript plus the pending action,"* and *"the overhead comes mainly from shell commands and network operations."* So a session that runs a lot of shell commands in auto mode is the one where the fallback costs you most.

The server-side checks are the new part. The CLI started asking the server for them by default in versions 2.1.271 to 2.1.281, depending on how you connect, and LiteLLM dates Anthropic's rollout to September 18, 2026. The notice exists to tell you when that free path isn't working for you.

## Why does Claude Code say this session isn't eligible?

Claude Code shows "this session isn't eligible" when Anthropic's free server-side checks can't reach it. Usually an LLM gateway drops the `safeguards` request field or the `safeguard_results` reply. Less often, your platform or region simply hasn't been rolled out yet.

![Claude Code auto mode classifier billing: when the server's review results come back, the server decides with no classifier charge and /status shows Auto mode server Enabled. When a gateway drops the safeguards fields or the platform isn't rolled out, the CLI makes its own classifier requests, billed as token usage, /status shows Disabled, and the notice says this session isn't eligible.](https://www.its-tahir.com/blog/claude-code-auto-mode-classifier-billing/when-classifier-is-billed.svg)

*The same action takes one of two paths. Only the right-hand one is billed, and only that one shows the notice.*

There are two causes, and the notice's wording tells you which one you're more likely to have.

**1. A gateway or proxy is dropping the safety fields.** This is the common cause. Server-side review works by sending an extra field with each request, `safeguards`, and reading the verdicts back from a `safeguard_results` field in the reply. A gateway that only forwards the fields it already knows about, rewrites requests, or edits responses breaks that round trip. The server never sees the request for checks, or the CLI never sees the answer, so it falls back.

When Claude Code can identify the gateway, it names it. If your `ANTHROPIC_BASE_URL` points anywhere other than an `anthropic.com` address, the 2.1.296 build prints that host, for example `your requests go through llm.internal.example.com`. It also has wording for eight gateway products it can recognise:

- a LiteLLM gateway
- a Helicone gateway
- a Portkey gateway
- Cloudflare AI Gateway
- a Kong gateway
- a Braintrust proxy
- a Bifrost gateway
- a Databricks gateway

**2. Your platform, region or credential doesn't have server-side checks yet.** Anthropic says availability *"depends on that platform's rollout."* If you see the short version of the notice, with no gateway named and no gateway in your setup, this is the likely cause. There's nothing to fix on your side. Report it with `/feedback` or ask your admin.

## How do I check if my session gets free server-side checks?

In a session that's in auto mode, run:

```text
/status
```

Look for the **Auto mode server** row. `Enabled` means the server's checks are deciding your actions, at no classifier charge. `Disabled` means the session has fallen back to Claude Code's own classifier requests.

It's the quickest way to confirm a gateway fix worked: start a new session after the change and check the row says `Enabled`.

## How do I fix "this session isn't eligible"?

Make the gateway pass traffic through unchanged, then start a new session. The fix lives in the gateway, not in Claude Code. Anthropic's [gateway compatibility guide](https://code.claude.com/docs/en/llm-gateway-protocol) asks gateways to treat headers and body fields *"as open lists, not closed ones"*:

- **Forward request headers and body fields as they are**, including ones the gateway doesn't recognise, such as `safeguards`, and the `anthropic-beta` header verbatim. Don't allowlist the values you've seen so far. New Claude Code releases add new ones.
- **Return responses and streaming events without dropping keys**, such as `safeguard_results`, and without rewriting tool-use IDs.
- **Don't cut streams short.** If the review results arrive late or mangled, you get a different, more disruptive error. More on that below.

If you run **LiteLLM**, this is a known, fixed bug: its `/v1/messages` route silently dropped the `safeguards` field, while the `/anthropic/v1/messages` pass-through route was unaffected. According to LiteLLM's notes:

- **Fixed versions:** v1.104.0, with backports in v1.99.3, v1.100.2, v1.101.1, v1.102.1 and v1.103.2. No configuration needed.
- **Bedrock behind LiteLLM:** point Claude Code at a `bedrock/<inference profile>` deployment, not the Converse route.
- **Beta header involved:** `dangerous-tool-use-2026-09-03`.

For other gateways, send your admin or vendor the [compatibility guide](https://code.claude.com/docs/en/llm-gateway-protocol#feature-pass-through). That's the link the notice itself points to.

Once the gateway passes traffic through, **new** sessions use the server's checks again. A running session that has already fallen back stays on the fallback.

## What Enter, Esc and the 24-hour reminder do

At an interactive prompt, the notice holds the first action it would have checked until you answer:

- **Enter** continues. That action and the rest of the session use the CLI's own classifier requests, billed as before, and the notice won't appear again in that session. If the notice **named a gateway**, acknowledging it also keeps it away on this machine for 24 hours. If it didn't name one, it comes back the next time a session falls back.
- **Esc** or **Ctrl+C** cancels. The held action doesn't run and the turn stops, still in auto mode. Nothing is remembered, so you'll see the notice again before the next checked action.

The 24-hour window isn't only in the docs. The 2.1.296 build stores when you acknowledged it and shows the notice again once a full day has passed.

In non-interactive runs (`claude -p`), the notice goes to stderr and the run continues. In `stream-json` output it arrives as a `system` warning message, which an Agent SDK app can read from the stream. If you parse CI logs for unexpected stderr, expect this line.

## CLAUDE_CODE_AUTO_MODE_SERVER=0 hides the notice. It doesn't cut the bill

Setting `CLAUDE_CODE_AUTO_MODE_SERVER=0` stops Claude Code requesting server-side checks. That hides the notice but doesn't change what you're billed:

```bash
export CLAUDE_CODE_AUTO_MODE_SERVER=0
```

That tells the CLI not to ask the server for checks at all. Every classifier request is then its own, **billed the same way**, and the notice has nothing to warn about. LiteLLM's notes say it bluntly: the variable only hides the notice, and you keep paying for classifier requests until the gateway is fixed.

Use it when you already know your gateway can't carry the checks and you want quiet logs. Three things to know before you rely on it:

- On a direct connection to the Anthropic API, it needs version **2.1.281 or later**.
- Anthropic calls it *"a temporary setting"* that *"may be removed in a later release."*
- `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`, which many gateway setups already use to avoid `400` errors, also turns the server's checks off while `CLAUDE_CODE_AUTO_MODE_SERVER` is unset. If you set that variable months ago, it may be why you're not eligible.

## How do I turn off the auto mode classifier?

Leave auto mode. The classifier only runs in auto mode, so pressing `Shift+Tab` to switch permission modes, and approving actions yourself, is the only way to stop it reviewing your commands. `CLAUDE_CODE_AUTO_MODE_SERVER=0` doesn't turn the classifier off; it only moves the checks from Anthropic's server to billed classifier requests.

If what you actually want is to stop paying for classifier checks, the options are making the gateway pass traffic through, connecting directly, or leaving auto mode.

## Not the same as "gave no verdict"

A gateway can break server-side review in two ways, and they look very different:

- **The review request or results go missing entirely** → the CLI quietly falls back and shows this billing notice. Your actions still run.
- **The results arrive truncated or in a form Claude Code can't read** → it refuses to run the action unreviewed, and you get *"The server-side auto mode classifier gave no verdict"*, and the turn stops after ten consecutive no-verdict denials.

If you're seeing denials rather than a notice, read [Claude Code auto mode "gave no verdict"](/blog/claude-code-auto-mode-classifier-no-verdict) instead. Both trace back to the same rule: the gateway has to pass traffic through unchanged.

## Quick reference

| You see | It means | Do this |
| --- | --- | --- |
| Notice naming a gateway (LiteLLM, Portkey, Kong…) | The gateway drops `safeguards` or `safeguard_results` | Upgrade or reconfigure the gateway to pass fields through; LiteLLM v1.104.0+ |
| Notice naming your own proxy's hostname | Same: your `ANTHROPIC_BASE_URL` gateway drops the fields | Send the admin the gateway compatibility guide |
| Short notice, no gateway in your setup | Server-side checks haven't reached your platform or region | Nothing to fix; `/feedback` if it persists |
| `/status` → Auto mode server: `Disabled` | This session is on billed fallback checks | Fix the cause, then start a new session |
| You set `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1` | That also switches server checks off | Remove it once your gateway passes beta fields through |
| You just want the notice gone | — | `CLAUDE_CODE_AUTO_MODE_SERVER=0` (same billing, temporary setting) |

**Key takeaways**

- The auto mode classifier billing notice means the free server-side safety checks aren't reaching your session, so the CLI runs its own classifier requests, billed as token usage as before. Nothing breaks.
- Fallback classifier calls are billed on Enterprise plans, Claude API accounts, Claude Platform on AWS, Bedrock, Google Cloud's Agent Platform and Foundry. Pro, Max and Team plans never see the notice.
- The usual cause is an LLM gateway that drops the safeguards request field or the safeguard_results reply. Version 2.1.296 prints your base URL's host, or one of eight gateway products it recognises.
- Run /status: Auto mode server Enabled means free server checks, Disabled means billed fallback. Fix the gateway (LiteLLM v1.104.0 or a listed backport), then start a new session.
- CLAUDE_CODE_AUTO_MODE_SERVER=0 hides the notice but keeps the same billing, and it's documented as temporary.

If your gateway is also a TLS-inspecting company proxy, the same "something in the middle changed the traffic" problem causes [Claude Code's SSL certificate errors](/blog/claude-code-ssl-certificate-corporate-proxy). To see where the rest of your tokens go, read [why Claude Code uses so many tokens](/blog/why-claude-code-uses-so-many-tokens), and for every other message, the [Claude Code troubleshooting index](/blog/claude-code-troubleshooting). On Google Cloud, the gateway is often not the problem at all: see [Claude Code on Google Cloud returning model not found](/blog/claude-code-vertex-ai-model-not-found). I help teams roll out Claude Code behind enterprise gateways and proxies. [See recent projects](/work).

## FAQ

### What does 'this session isn't eligible' mean in Claude Code auto mode?

In auto mode, a classifier reviews shell commands and network actions before they run; reads and edits inside your working directory skip it. Anthropic's servers can now do that check for free as part of your normal model requests. The notice means those server checks aren't reaching your session, so Claude Code is making its own classifier requests instead, billed as token usage the way they always were. Auto mode keeps working. The usual cause is an LLM gateway or proxy between Claude Code and the API.

### Does Claude Code auto mode use more tokens?

It depends on where the safety check runs. When Anthropic's server reviews actions as part of your model requests, there are no separate classifier calls to pay for. When the check falls back to Claude Code's own classifier requests, each check sends part of the transcript plus the pending action, and on Enterprise plans, Claude API accounts, Claude Platform on AWS, Amazon Bedrock, Google Cloud's Agent Platform and Microsoft Foundry those calls count toward token usage. Reads and edits inside your working directory skip the classifier, so the overhead comes mainly from shell commands and network operations.

### Does CLAUDE_CODE_AUTO_MODE_SERVER=0 stop the classifier charges?

No. It stops Claude Code asking the server for checks, so the notice disappears, but every classifier request is then Claude Code's own and billed the same way. LiteLLM's own notes on this change say the same: the variable only hides the notice. It's the right setting when you know your gateway can't pass the checks through, not a way to save tokens.

### How do I check whether my session gets free server-side checks?

Run /status at the Claude Code prompt while the session is in auto mode. The Auto mode server row reads Enabled while the server's checks decide your actions, and Disabled once the session has fallen back to Claude Code's own classifier requests.

### How do I turn off the auto mode classifier in Claude Code?

The classifier only runs in auto mode, so the way to turn it off is to leave auto mode: press Shift+Tab to switch permission modes and approve actions yourself. CLAUDE_CODE_AUTO_MODE_SERVER=0 doesn't turn the classifier off. It only stops Claude Code asking Anthropic's server to run the checks, so they run as billed classifier requests instead.

### Do Pro, Max or Team users see the auto mode classifier billing notice?

No. Anthropic's docs say Pro, Max and Team plans never show it, and the check in Claude Code 2.1.296 skips the notice for those plans. It appears on accounts where classifier requests are billed as token usage, such as Enterprise plans, Claude API keys and the cloud providers.

## Sources

- [Auto mode classifier request charges — Claude Code docs](https://code.claude.com/docs/en/auto-mode-classifier-billing)
- [Choose a permission mode: server-side classifier review — Claude Code docs](https://code.claude.com/docs/en/permission-modes)
- [Claude Code gateway compatibility guide — Claude Code docs](https://code.claude.com/docs/en/llm-gateway-protocol)
- [Claude Code server-side auto mode — LiteLLM blog](https://docs.litellm.ai/blog/claude-code-server-side-auto-mode)
- [@anthropic-ai/claude-code 2.1.296 — npm registry record](https://registry.npmjs.org/@anthropic-ai/claude-code/2.1.296)
