1
00:00:00,140 --> 00:00:03,299
So, Maya, I- I- I was looking through the
GitHub tracker last night,

2
00:00:03,779 --> 00:00:09,159
and I stumbled on this issue, number
33390, that is just...

3
00:00:09,739 --> 00:00:13,659
it is an absolute horror story for anyone
running local development.

4
00:00:14,299 --> 00:00:17,760
This developer was running a routine
repository audit, right?

5
00:00:18,359 --> 00:00:23,139
Just scanning some code, and they
triggered a multi-agent swarm.

6
00:00:23,199 --> 00:00:28,639
Before they knew it, this thing had
spawned 328 spawn_agent tool calls,

7
00:00:29,199 --> 00:00:32,819
spinning up 386 distinct thread IDs.

8
00:00:33,399 --> 00:00:34,579
And the kicker?

9
00:00:34,659 --> 00:00:39,479
Codex Desktop consumed 130.58 GB of
memory.

10
00:00:39,879 --> 00:00:43,459
One hundred and thirty gigabytes?

11
00:00:44,079 --> 00:00:45,639
On- on a local machine?

12
00:00:46,379 --> 00:00:50,119
That's not a memory leak, Ethan, that's a
hostile takeover!

13
00:00:50,819 --> 00:00:54,979
I mean, most high-end developer setups,
like a beefy MacBook Pro,

14
00:00:55,460 --> 00:00:59,539
max out at 24 or maybe 36 gigs.

15
00:01:00,219 --> 00:01:05,599
A 24-gig Mac would just melt trying to
swap that much data to the SSD.

16
00:01:06,879 --> 00:01:07,639
Oh, it did.

17
00:01:08,019 --> 00:01:10,659
It brought the entire system to a grinding
halt.

18
00:01:11,319 --> 00:01:14,340
Just endless macOS out-of-memory alerts.

19
00:01:15,039 --> 00:01:18,639
But the really wild part isn't just the
sheer scale of the swarm.

20
00:01:19,279 --> 00:01:21,319
It's *why* it got so heavy.

21
00:01:21,939 --> 00:01:26,539
It turns out, under the hood, there's this
feature called the Multi-Agent V2

22
00:01:26,659 --> 00:01:27,180
runtime.

23
00:01:27,819 --> 00:01:31,739
And if your main parent agent is running
on the "Sol Ultra" profile...

24
00:01:32,420 --> 00:01:35,119
you know, with the model_reasoning_effort
set to "ultra"...

25
00:01:36,079 --> 00:01:42,199
it silently, and I mean completely
silently, upgrades every single spawned sub-agent

26
00:01:42,239 --> 00:01:44,599
to that exact same Sol Ultra profile.

27
00:01:45,024 --> 00:01:45,484
Wait.

28
00:01:45,544 --> 00:01:50,844
So if the parent is pulling out the
heavy-duty, expensive reasoning model,

29
00:01:51,504 --> 00:01:57,264
every little helper agent it spawns to,
say, read a single file or regex a string,

30
00:01:57,884 --> 00:01:59,864
also gets upgraded to Sol Ultra?

31
00:02:00,505 --> 00:02:03,384
Even if you explicitly configured them to
be lightweight?

32
00:02:03,807 --> 00:02:04,527
Exactly.

33
00:02:04,847 --> 00:02:08,208
It completely bypasses your local agent
configurations.

34
00:02:08,847 --> 00:02:12,168
So you think you're spinning up a bunch of
cheap, quick helper agents,

35
00:02:12,708 --> 00:02:17,708
but instead you've got three hundred and
eighty-six mini-Einstein minds running at

36
00:02:17,767 --> 00:02:18,628
maximum effort.

37
00:02:19,247 --> 00:02:24,487
And if you're hooked up to your ChatGPT
Plus or custom enterprise API keys,

38
00:02:25,048 --> 00:02:26,208
those token quotas?

39
00:02:27,167 --> 00:02:27,667
Vanished.

40
00:02:28,167 --> 00:02:29,187
Gone in minutes.

41
00:02:30,287 --> 00:02:31,668
That is terrifying.

42
00:02:32,007 --> 00:02:35,807
It's like calling a team of specialized
surgeons just to hand you a band-aid.

43
00:02:36,607 --> 00:02:38,128
But why is it doing this?

44
00:02:38,527 --> 00:02:42,647
Is it just a bug, or is there some weird
architectural decision behind it?

45
00:02:42,958 --> 00:02:44,878
It's actually a schema-constraint issue.

46
00:02:45,058 --> 00:02:50,318
See, in Multi-Agent V2, OpenAI tried to
prevent token bloat.

47
00:02:50,478 --> 00:02:56,078
The old default schema for
collaboration.spawn_agent had all these fields where you

48
00:02:56,105 --> 00:03:00,158
could specify the agent_type, the model,
the reasoning_effort.

49
00:03:00,298 --> 00:03:04,238
But they stripped all those arguments out
to save context window tokens.

50
00:03:04,358 --> 00:03:09,438
And to make matters worse, there's this
parameter called fork_turns which defaults

51
00:03:09,518 --> 00:03:10,398
to "all".

52
00:03:10,542 --> 00:03:15,758
That means when a sub-agent is spawned, it
gets a full-history fork of the parent's

53
00:03:15,813 --> 00:03:16,558
conversation.

54
00:03:16,678 --> 00:03:21,918
Because it's a full fork, the runtime just
rejects any manual model overrides you

55
00:03:21,978 --> 00:03:28,078
try to pass it, and it forces the child to
inherit that heavy Sol Ultra profile from

56
00:03:28,118 --> 00:03:28,718
its parent.

57
00:03:29,067 --> 00:03:30,347
Ah, I see.

58
00:03:30,667 --> 00:03:34,168
So because it wants to carry over the
whole conversation history,

59
00:03:34,847 --> 00:03:38,928
it- it basically says, "Well, I have to
keep using the same massive engine to

60
00:03:38,968 --> 00:03:40,467
understand this context."

61
00:03:41,027 --> 00:03:44,847
And you're left with a 130-gigabyte memory
footprint.

62
00:03:45,388 --> 00:03:46,447
It's a complete trap.

63
00:03:46,792 --> 00:03:47,672
It really is.

64
00:03:47,792 --> 00:03:52,232
But the good news is, there are actually
ways to fight back and re-tame these

65
00:03:52,285 --> 00:03:52,792
swarms.

66
00:03:52,952 --> 00:03:56,552
You don't have to just sit there and watch
your system memory evaporate.

67
00:03:56,861 --> 00:03:58,201
Okay, spill.

68
00:03:58,722 --> 00:04:00,781
How do we break this inheritance chain?

69
00:04:00,821 --> 00:04:05,281
Because I am not letting an agent spawn
three hundred sub-agents on my watch.

70
00:04:05,744 --> 00:04:08,504
Well, the first step is exposing those
hidden overrides.

71
00:04:08,984 --> 00:04:11,764
There's a hidden feature flag in your
configuration file.

72
00:04:12,344 --> 00:04:19,244
If you open up your config at
~/.codex/config.toml, you need to go to the

73
00:04:19,404 --> 00:04:24,804
section and set
hide_spawn_agent_metadata = false.

74
00:04:25,465 --> 00:04:30,324
By default, this is set to true, which is
what hides the metadata and breaks model

75
00:04:30,385 --> 00:04:30,885
selection.

76
00:04:31,604 --> 00:04:36,524
If you set it to false, it restores what
developers are calling "v1 parity."

77
00:04:37,164 --> 00:04:41,505
It forces the schema to actually expose
those advanced arguments to the model,

78
00:04:42,044 --> 00:04:46,244
so the parent model can actually see and
select cheaper specialist models,

79
00:04:46,665 --> 00:04:51,584
like gpt-5.6-luna, instead of defaulting
to Sol Ultra every time.

80
00:04:52,024 --> 00:04:53,264
Oh, interesting.

81
00:04:53,984 --> 00:04:58,664
So by exposing that metadata, you're
giving the master model the option to say,

82
00:04:59,085 --> 00:05:03,484
"Hey, this is a simple task, let's use the
lightweight Luna model instead of the

83
00:05:03,644 --> 00:05:04,724
heavy-duty Sol."

84
00:05:05,545 --> 00:05:08,104
But what about that fork_turns issue you
mentioned?

85
00:05:08,565 --> 00:05:11,024
The whole "all history" inheritance thing?

86
00:05:11,292 --> 00:05:12,012
Right.

87
00:05:12,092 --> 00:05:15,372
To fix that, you have to look at your
workspace instructions.

88
00:05:15,425 --> 00:05:21,612
If you inject fork_turns = "none" into
your instructions, it tells Codex to spawn a

89
00:05:21,692 --> 00:05:24,572
fresh, clean specialist sub-agent.

90
00:05:24,759 --> 00:05:26,892
No conversation history baggage.

91
00:05:27,032 --> 00:05:32,252
And when it's a fresh agent, it actually
honors your custom agent profiles under

92
00:05:32,572 --> 00:05:39,292
.codex/agents/*.toml-meaning you can
explicitly set a

93
00:05:39,359 --> 00:05:42,572
lower reasoning effort there, and it will
actually stick.

94
00:05:42,882 --> 00:05:49,102
Okay, so fork_turns = "none" is like
giving the sub-agent amnesia so it doesn't

95
00:05:49,122 --> 00:05:52,883
bring the whole family history with it,
which lets it run lightweight.

96
00:05:53,423 --> 00:05:54,302
That makes total sense.

97
00:05:55,003 --> 00:05:58,022
But what if a swarm just goes completely
rogue?

98
00:05:58,422 --> 00:05:59,742
Like, is there a panic button?

99
00:06:00,142 --> 00:06:04,503
A way to just say, "No, you cannot go
deeper than one level of nesting"?

100
00:06:04,875 --> 00:06:06,315
Yes, absolutely.

101
00:06:06,415 --> 00:06:11,675
And honestly, if you're running headless
automation or CI/CD pipelines,

102
00:06:11,715 --> 00:06:13,115
you *have* to set this.

103
00:06:13,275 --> 00:06:19,835
You can use the CLI configuration option
agents.max_depth = 0.

104
00:06:20,128 --> 00:06:25,835
Or, if you're running a specific command,
you can pass it inline like codex exec

105
00:06:26,262 --> 00:06:30,795
--config agents.max_depth=0.

106
00:06:30,971 --> 00:06:35,115
What this does is it hard-stops any
recursive nesting.

107
00:06:35,328 --> 00:06:40,555
If an agent tries to delegate a task to
another agent, the system blocks it and

108
00:06:40,624 --> 00:06:43,515
forces Codex to fall back to serial
execution.

109
00:06:43,702 --> 00:06:47,595
It essentially clips the wings of the
swarm before it can even start.

110
00:06:47,902 --> 00:06:49,302
Oh, thank goodness.

111
00:06:49,602 --> 00:06:52,543
That is a massive relief for automated
pipelines.

112
00:06:53,202 --> 00:06:57,202
But while we're talking about updates,
didn't they just roll out some quick fixes in

113
00:06:57,222 --> 00:06:59,483
the latest versions to address some of
this stuff?

114
00:06:59,833 --> 00:07:00,873
They did!

115
00:07:00,923 --> 00:07:07,033
Version 0.144.6 brought a really important
hotfix for model metadata.

116
00:07:07,129 --> 00:07:13,673
They corrected the context windows for the
GPT-5.6 suite-specifically the Sol,

117
00:07:13,780 --> 00:07:19,113
Terra, and Luna models-to exactly 272,000
tokens.

118
00:07:19,239 --> 00:07:24,073
Before this, the system was getting
confused about how much context it could handle,

119
00:07:24,100 --> 00:07:26,633
which was causing its own set of routing
headaches.

120
00:07:26,965 --> 00:07:33,704
Mm, 272,000 tokens is a lot of room, so
having that metadata corrected

121
00:07:33,804 --> 00:07:35,385
is huge for stability.

122
00:07:36,164 --> 00:07:42,384
I also noticed they updated the TUI-the
terminal user interface-with a new /usage

123
00:07:42,545 --> 00:07:43,924
credit redemption screen.

124
00:07:44,524 --> 00:07:48,324
It actually displays your credit types and
their expiration dates now,

125
00:07:48,664 --> 00:07:52,864
so you don't accidentally burn through
your high-priority Ultra credits on a

126
00:07:52,924 --> 00:07:55,244
massive, unintended debug session.

127
00:07:55,542 --> 00:07:58,422
Yeah, that visibility is key when you're
managing costs.

128
00:07:58,542 --> 00:08:05,462
And on the safety front, they also pushed
a patch in v0.144.5 that expands the

129
00:08:05,518 --> 00:08:07,062
dangerous-command filtering.

130
00:08:07,275 --> 00:08:13,062
It catches a lot more variations of the rm
command, so even if a rogue agent swarm

131
00:08:13,094 --> 00:08:17,782
gets out of hand, it's blocked from doing
any serious damage to your local file

132
00:08:17,839 --> 00:08:18,262
system.

133
00:08:19,389 --> 00:08:20,629
Well, that's reassuring.

134
00:08:21,230 --> 00:08:26,190
I'd prefer my agents not to delete my
entire hard drive while they're busy eating up

135
00:08:26,269 --> 00:08:28,329
a hundred and thirty gigabytes of RAM.

136
00:08:29,189 --> 00:08:33,809
Alright, I'm going to go flip that
hide_spawn_agent_metadata flag right now.

137
00:08:34,510 --> 00:08:35,369
Good talking to you, Ethan!

138
00:08:35,667 --> 00:08:38,347
Yeah, definitely check that config.

139
00:08:38,419 --> 00:08:39,667
Talk soon, Maya.

