1
00:00:00,120 --> 00:00:04,740
Last episode we tossed a variable name out
right at the end and kind of ran off with

2
00:00:04,760 --> 00:00:04,860
it.

3
00:00:05,480 --> 00:00:09,840
Brought to you by Jellypod AI, this is the
Claude Code Changelog,

4
00:00:10,300 --> 00:00:13,000
and today that variable gets the full
treatment.

5
00:00:13,500 --> 00:00:20,400
It's CLAUDE_CODE_WORKFLOW_SUBAGENT_MODEL,
and it shipped in Claude Code 2.1.296 on

6
00:00:20,440 --> 00:00:21,120
October 9.

7
00:00:21,818 --> 00:00:27,158
The release note is one line: it runs
every workflow agent on one model while other

8
00:00:27,258 --> 00:00:28,438
subagents keep theirs.

9
00:00:29,038 --> 00:00:30,378
The useful part is the scope.

10
00:00:30,938 --> 00:00:35,718
If you write workflow scripts that fan out
work, say parallel agents running tests,

11
00:00:35,998 --> 00:00:40,678
linting, generating boilerplate, or
auditing files, you can easily end up with

12
00:00:40,738 --> 00:00:42,158
dozens of agents in a batch.

13
00:00:42,718 --> 00:00:44,978
Before this, those agents had two options.

14
00:00:45,338 --> 00:00:49,438
They inherited your session model, which
might be Opus or Sonnet 5.5,

15
00:00:49,858 --> 00:00:53,018
and that cost multiplies fast across multi
turn pipelines.

16
00:00:53,638 --> 00:00:58,138
Or you hardcoded a cheaper model into the
subagent's markdown definition under

17
00:00:58,258 --> 00:00:59,638
.claude/agents.

18
00:01:00,330 --> 00:01:02,010
And that second option bites you.

19
00:01:02,570 --> 00:01:07,550
Say you've got a subagent called reviewer,
and you pin it to Haiku 5.5 so your

20
00:01:07,670 --> 00:01:09,350
overnight batch runs stay cheap.

21
00:01:10,030 --> 00:01:10,350
Fine.

22
00:01:10,970 --> 00:01:15,970
But then on Tuesday you're in your main
session, you call @reviewer on a gnarly

23
00:01:16,030 --> 00:01:21,650
refactor, and it's still Haiku 5.5,
because the pin lives in the definition.

24
00:01:22,270 --> 00:01:25,390
You fixed the batch and quietly broke the
interactive case.

25
00:01:26,030 --> 00:01:30,410
That's the collateral damage, and it's a
bit like fixing a leaky tap by turning off

26
00:01:30,450 --> 00:01:31,710
the water to the whole house.

27
00:01:32,398 --> 00:01:37,378
So the variable moves the decision out of
the agent definitions and into one switch

28
00:01:37,418 --> 00:01:38,818
that only workflows read.

29
00:01:39,338 --> 00:01:42,578
That gives you what I'd call the
orchestrator plus swarm pattern.

30
00:01:42,918 --> 00:01:48,018
Your interactive session runs on Sonnet
5.5 or Opus, doing planning and synthesis.

31
00:01:48,558 --> 00:01:53,798
Every scripted worker underneath runs on
Haiku 5.5, or Sonnet 5.5 if you want a

32
00:01:53,838 --> 00:01:54,358
middle setting.

33
00:01:54,958 --> 00:01:57,558
One variable, and your agent files stay
untouched.

34
00:01:58,430 --> 00:01:59,370
Here's how you use it.

35
00:01:59,850 --> 00:02:02,810
For a one off, set it inline in front of
the command.

36
00:02:03,490 --> 00:02:09,690
CLAUDE_CODE_WORKFLOW_SUBAGENT_MODEL equals
Haiku

37
00:02:10,009 --> 00:02:14,670
5.5, using the model ID you'd normally
pass, then run claude.

38
00:02:15,370 --> 00:02:19,650
Same thing in headless mode: put the
variable in front, run claude with your prompt,

39
00:02:20,050 --> 00:02:25,210
something like run test pipeline, and
every workflow agent in that run uses that

40
00:02:25,270 --> 00:02:25,550
model.

41
00:02:26,310 --> 00:02:31,170
If you want it to stick for a project,
open .claude/settings.json,

42
00:02:31,530 --> 00:02:37,330
or settings.local.json if it's just for
you, and add an env block with the variable

43
00:02:37,390 --> 00:02:39,430
as the key and the model as the value.

44
00:02:40,050 --> 00:02:42,010
Shared file means the whole team gets it.

45
00:02:42,430 --> 00:02:44,210
Local file means it's your business.

46
00:02:45,277 --> 00:02:48,837
One clarification, because there are a few
new dials around subagents.

47
00:02:49,317 --> 00:02:51,177
This variable only picks the model.

48
00:02:51,557 --> 00:02:54,937
It doesn't change how hard an agent
thinks, that's the effort setting.

49
00:02:55,357 --> 00:02:56,737
And it doesn't touch context.

50
00:02:57,077 --> 00:03:02,017
That's autoCompactWindow, also in 2.1.296,
which we covered last time.

51
00:03:02,537 --> 00:03:02,997
They stack.

52
00:03:03,297 --> 00:03:07,137
You could put the swarm on a cheaper
model, lower effort for retrieval style

53
00:03:07,177 --> 00:03:09,617
workers, and compact early, all at once.

54
00:03:10,217 --> 00:03:11,317
Now the things to watch.

55
00:03:11,917 --> 00:03:13,337
First, strict scope.

56
00:03:13,677 --> 00:03:17,457
It only applies to agents invoked inside
workflow scripts.

57
00:03:18,037 --> 00:03:22,097
Calls from your main prompt through the
Agent tool, the Task tool,

58
00:03:22,557 --> 00:03:28,077
or a custom subagent like @reviewer still
use their own defined model or your

59
00:03:28,157 --> 00:03:28,877
session default.

60
00:03:29,917 --> 00:03:31,757
Second, capability cliffs.

61
00:03:32,317 --> 00:03:38,097
If a script was written assuming Sonnet or
Opus reasoning, say a complex multi file

62
00:03:38,157 --> 00:03:44,757
transform or a rigid structured JSON
schema, forcing Haiku 5.5 across every

63
00:03:44,937 --> 00:03:49,697
step can give you schema validation
failures or invented command flags.

64
00:03:50,297 --> 00:03:54,517
So try it on one workflow first, compare
quality and runtime,

65
00:03:54,917 --> 00:03:56,917
and check /cost afterwards.

66
00:03:57,748 --> 00:03:59,348
Third, organization policy.

67
00:03:59,648 --> 00:04:02,908
If your admins limit available models
through managed settings,

68
00:04:03,088 --> 00:04:04,888
a model that isn't allowed won't work.

69
00:04:05,288 --> 00:04:06,368
Admin policy wins.

70
00:04:06,968 --> 00:04:09,688
And fourth, the sneaky one: silent
persistence.

71
00:04:10,248 --> 00:04:15,608
If you export this in your .bashrc or
.zshrc, or bake it into a CI image,

72
00:04:15,868 --> 00:04:16,487
it stays on.

73
00:04:16,908 --> 00:04:20,848
A teammate later wonders why workflow
output reads shallower than their interactive

74
00:04:20,927 --> 00:04:23,228
runs, and nobody remembers the variable.

75
00:04:23,708 --> 00:04:27,048
So if workflow results suddenly change,
check your environment first.

76
00:04:27,910 --> 00:04:30,990
A few smaller wins in 2.1.296.

77
00:04:31,550 --> 00:04:36,950
The default limit on MCP tool descriptions
and MCP server instructions doubled,

78
00:04:37,330 --> 00:04:44,330
from 2,048 to 4,096 characters, so tool
heavy servers are less likely to get cut

79
00:04:44,410 --> 00:04:44,630
off.

80
00:04:45,670 --> 00:04:50,410
Edit and NotebookEdit now refuse files
that aren't valid UTF eight,

81
00:04:50,830 --> 00:04:57,350
like Windows 1252, Shift JIS, or GBK,
instead of replacing every non

82
00:04:57,530 --> 00:04:58,330
ASCII character.

83
00:04:59,068 --> 00:05:03,568
On Windows, PowerShell commands longer
than about 1 KB used to ask for permission

84
00:05:03,708 --> 00:05:04,288
every time.

85
00:05:04,868 --> 00:05:08,508
Allow rules and read only detection now
apply up to 32 KB.

86
00:05:09,128 --> 00:05:12,948
The Ctrl+O transcript view is more
responsive in code heavy sessions,

87
00:05:13,068 --> 00:05:15,248
because syntax highlighted blocks are
cached.

88
00:05:15,828 --> 00:05:20,148
And workflow scripts no longer silently
truncate results or options nested deeper

89
00:05:20,168 --> 00:05:21,668
than about 20,000 levels.

90
00:05:22,388 --> 00:05:27,808
Run claude with the version flag and make
sure you're on 2.1.296 or later before you

91
00:05:27,848 --> 00:05:28,588
try any of this.

