TL;DR
- According to Anthropic's @ClaudeDevs account (posted November 4, US time): a running background subagent refreshes its status line every 30 seconds, and each refresh used to re-read the subagent's whole conversation. Now Haiku 5.5 writes it from short notes, so each refresh takes about 99% less.
- According to the follow-up post: the subagent itself keeps its own model; sessions with background subagents used about 5% less of the limit, so the same limit gets about 6% more prompts. It is live for most Pro, Max and Ultra users and everyone on Team and Enterprise, and needs Claude Code v2.1.316 or later.
- The only thing to do: run
claude --versionand upgrade if you are below 2.1.316. According to AlphaSignal, no configuration change is needed. - We tested on November 5 with an aicodewith API Key on Claude Code 2.1.318. The background subagent's status line did change about every 30 seconds ("Reading shop and test files" → "Re-running tests on test_shop.py"), and the subagent finished in 1 min 46 s with the right file:line. Over an API Key, the status refresh requests we captured used the subagent's own model. To put both the subagent and its status line on Haiku 5.5, set
CLAUDE_CODE_SUBAGENT_MODEL;/tasksthen shows "Haiku 5.5".
Create an API Key and run background subagents in Claude Code →
What changed
| Item | Before | From v2.1.316 (per Anthropic) |
|---|---|---|
| Refresh interval | About every 30 s while a background subagent works | Same |
| What a refresh reads | The subagent's whole conversation, growing as it runs | Short notes the subagent keeps as it works |
| Who writes the line | The subagent's own model | Haiku 5.5 |
| Per refresh | Grows with the conversation | About 99% less |
| Whole session | — | About 5% less of the limit, about 6% more prompts |
| Model the subagent works on | The one you configured | Unchanged |
This comes from the @ClaudeDevs main post and follow-up. According to METAL, Anthropic also posted a 6.6-second explainer video; according to AlphaSignal, the post went up on November 4, US time.
The "status line" here is not the bottom bar you customize with /statusline. It is the short "what it is doing now" text after each background subagent in the panel under the prompt. According to developer Gabriel Anhaia's write-up on DEV, that text used to come from sending the subagent's conversation to the subagent's own model and asking for a 3–5 word summary of its latest action. It only fires for background subagents that are actively working. So the more subagents you run, and the longer they run, the more it adds up.
The Claude Code changelog shows earlier fixes to the same line: 2.1.128 fixed progress summaries missing the prompt cache, 2.1.274 fixed a summary turning into a multi-paragraph reply, and the latest 2.1.318 fixed the "Now using usage credits" notice reappearing about every 30 seconds while a background subagent runs.
Who is affected
| Your setup | Effect |
|---|---|
| Pro, Max or Ultra plan, background subagents often | Live for most users per Anthropic; on 2.1.316+ the same limit gives about 6% more prompts |
| Team or Enterprise | Live for everyone per Anthropic |
| Rarely use subagents | Almost no change; only the background subagent status line changed |
| Claude Code with an API Key (ANTHROPIC_BASE_URL) | Metered by tokens, not the plan limit. In our test, refreshes still followed the subagent's model; to save tokens, put subagents on Haiku 5.5 (below) |
For how the limits work, including the 5-hour window and the weekly limit, see Claude Code usage limits and Max 20x.
Upgrade to 2.1.316+ and check your version
Check what you run now:
claude --version
2.1.318 (Claude Code)
If it is below 2.1.316, upgrade the way you installed. According to the Claude Code setup docs, native installs update in the background, while Homebrew and WinGet do not update on their own by default:
# Native or npm install: update to the newest version
claude update
# Homebrew: the claude-code cask is the stable channel, usually about a week behind; use @latest to get new versions right away
brew upgrade claude-code@latest
# Windows WinGet
winget upgrade Anthropic.ClaudeCode
# Check install method, auto-update status and the last update result
claude doctor
Open a new terminal and run claude --version again. Anthropic's posts mention no new switch or setting, so just use background subagents as usual after upgrading.
Hands-on: a background subagent in Claude Code with an API Key
Tested on November 5, 2026, Claude Code 2.1.318 on Linux, main session on Opus 5.5. We used a clean HOME directory so no existing config was touched.
Step 1: create an API Key and connect Claude Code
- Sign up at aicodewith.ai, sign in, then click "Key Management" in the left navigation bar.
- Click "Create key" and give it a clear name, for example "Claude Code subagents".
- Copy the full key right away. Once the dialog closes, the full key is not shown again. See the Create API Key docs.
Put the key in ~/.claude/settings.json:
{
"env": {
"ANTHROPIC_BASE_URL": "https://api.aicodewith.ai",
"ANTHROPIC_AUTH_TOKEN": "YOUR_API_KEY"
}
}
For other ways to connect, see How to use Claude Code with a third-party API.
Step 2: give it a task that runs for a while
The demo repo is a small Python project: 3 files under shop/ and 7 tests under tests/. Each test's setUp waits 6 seconds, so one run of the suite takes about 42 seconds, and shop/pricing.py hides a threshold bug: "10 or more units" written as qty > 10. Send this in Claude Code:
Use a general-purpose subagent in the background for a read-only review of this repo:
first run python3 -m unittest discover -s tests -v (about 45 seconds), then read every
file in shop/ and tests/ one by one, then run the test suite a second time, and finally
report each failing test with file:line, a one-line fix, and two other risks you notice.
The subagent must not edit any file. While it runs, just tell me it started.
Step 3: watch the background subagent's status line
The main session replies right away that it started, and the subagent panel appears under the prompt. Here is the same row at different times, in order:
● Agent(Read-only repo review)
⎿ Backgrounded agent (↓ to manage · ctrl+o to expand)
✻ Waiting for 1 background agent to finish
● main
◯ general-purpose Read-only repo review 48s · ↓ 12.0k tokens
◯ general-purpose Reading shop and test files 1m 10s · ↓ 14.0k tokens
◯ general-purpose Re-running tests on test_shop.py 1m 40s · ↓ 14.1k tokens
● Agent "Read-only repo review" finished · 1m 46s
It first shows the task name "Read-only repo review". At 1 min 10 s it becomes "Reading shop and test files", at 1 min 40 s "Re-running tests on test_shop.py", about 30 seconds apart, and the subagent finishes at 1 min 46 s. In another run that only ran the tests once (subagent on the main session's Opus 5.5), it finished in 59 s and the line changed from the task name to "Preparing shop unittest discovery run".
The subagent's final report (excerpt):
Tests: 7 ran and 1 failed. Both runs gave the same results, so nothing looks flaky.
Failing test: test_bulk_at_threshold (tests/test_shop.py:10)
- It expects 10 units at 1.0 to total 9.5, but the code returns 10.0.
- The cause is shop/pricing.py:3, which uses if qty > 10.
- Fix: change > to >= at shop/pricing.py:3.
Two other risks:
1. Overselling (shop/inventory.py:4-7): reserve() checks stock and then sets it with no lock.
2. Missing input checks (shop/cart.py:5, shop/cart.py:9).
Both shop/pricing.py:3 and the > to >= fix are correct, and no file was changed.
Step 4: which model writes the status line?
We put a local pass-through in front of the API that only logged the model name and message count:
| When | Request | Model | Conversation sent | Output |
|---|---|---|---|---|
| Around 1 min 10 s | Status refresh | claude-haiku-5-5 (the subagent's model) | Subagent's current conversation, 7 messages | "Reading shop and test files", 10 tokens |
| Around 1 min 40 s | Status refresh | claude-haiku-5-5 (the subagent's model) | Subagent's current conversation, 8 messages | "Re-running tests on test_shop.py", 15 tokens |
So in our test over an API Key through ANTHROPIC_BASE_URL, the refresh still sent the subagent's current conversation to the subagent's own model, which matches the old behavior Anthropic described. Anthropic says the new behavior is live for most plan users and does not mention API Key setups. For API Key users, the most direct fix is to put subagents on Haiku 5.5: both the work and the status refreshes then run on Haiku 5.5.
How to set the subagent model
According to the Claude Code subagent docs, the subagent model is picked in this order:
- The
modelparameter Claude passes for that call; - The
modelfield in the subagent's definition (inheritmeans the main session's model); - The
CLAUDE_CODE_SUBAGENT_MODELenvironment variable; - The main session's model.
Option 1: a default model for all subagents
Add one line to env in ~/.claude/settings.json. This is the config we used in Step 3:
{
"env": {
"ANTHROPIC_BASE_URL": "https://api.aicodewith.ai",
"ANTHROPIC_AUTH_TOKEN": "YOUR_API_KEY",
"CLAUDE_CODE_SUBAGENT_MODEL": "claude-haiku-5-5"
}
}
It is only a default: subagents whose definition sets model, or calls where Claude passes a model, override it. On its own it also does not change the built-in Explore and Plan subagents.
Option 2: a model for one subagent
Create a Markdown file in your project's .claude/agents/ or your own ~/.claude/agents/:
---
name: test-runner
description: Runs the test suite and reports failing tests with file:line. Read-only.
tools: Read, Grep, Glob, Bash
model: haiku
effort: medium
---
Run the tests, read only the files you need, and report each failing test
with file:line and a one-line fix. Never edit files.
model accepts haiku, sonnet, opus, inherit or a full model ID such as claude-haiku-5-5. For a fuller read-only subagent, see Claude Code subagents on Haiku 5.5: setup.
Option 3: force one model on every subagent
{
"env": {
"CLAUDE_CODE_SUBAGENT_MODEL": "haiku",
"CLAUDE_CODE_SUBAGENT_MODEL_FORCE": "1",
"CLAUDE_CODE_SUBAGENT_EFFORT": "medium"
}
}
CLAUDE_CODE_SUBAGENT_MODEL_FORCE=1 ignores model in definitions (needs v2.1.257+). CLAUDE_CODE_SUBAGENT_EFFORT is new in 2.1.316 and sets the default effort for subagents instead of inheriting the session's.
Check that it worked
While the subagent runs, type /tasks and select it to see the model it actually uses. Our output:
/tasks
general-purpose › Read-only repo review
1m 1s · 14.0k tokens · 8 tools · Haiku 5.5
Progress
Read(shop/cart.py)
Read(shop/inventory.py)
Read(shop/pricing.py)
Read(tests/test_shop.py)
› Bash(python3 -m unittest discover -s tests -v 2>&1; echo "EXIT=$?")
"Haiku 5.5" at the end of the second line is the model the subagent runs on. For which jobs suit Haiku 5.5 or Sonnet 5.5, see Claude Haiku 5.5 vs Sonnet 5.5.
Other ways to use less
- Run fewer background subagents at once: the status line only refreshes for working background subagents, so five at once means five refresh loops.
- Hand file search and test runs to Haiku 5.5 and keep the main session for the parts that need deep thinking.
- Turn repeated flows into Skills: work that does not need its own context runs leaner in the main session, see Fold Claude Code subagents into Skills.
- Codex users: for splitting Codex work into subtasks, see Codex subagents: task splitting strategy; to run Claude Code and Codex side by side in separate directories, see Run several Claude Code / Codex sessions in parallel without Conductor.
FAQ
Do I need to change any setting?
Anthropic only asks you to update to v2.1.316 or later, and the posts mention no new switch. According to AlphaSignal, no configuration change is needed.
Will my subagents now run on Haiku?
No. According to Anthropic, Haiku 5.5 only writes the status line; the subagent works on the model you configured. To run the subagent itself on Haiku, set CLAUDE_CODE_SUBAGENT_MODEL or write model: haiku in its definition.
How do "99% less" and "5% less" relate?
99% is per status refresh; 5% is for the whole session. Status refreshes are a small share of a session, so the session saves about 5%, which means about 6% more prompts on the same limit.
How do I see what a background subagent is doing?
The subagent panel under the prompt has one row per background subagent with its status, elapsed time and tokens. Select it with ↓, press Enter to open its transcript, and use /tasks to see its model, tool calls and progress.
Does the new behavior apply when I connect with an API Key?
Anthropic's posts only name Pro, Max, Ultra, Team and Enterprise. In our API Key test on 2.1.318, status refreshes followed the subagent's model; with the subagent on Haiku 5.5, the refreshes ran on Haiku 5.5 too.
Create an API Key and start using Claude Code background subagents →



