1
00:00:00,000 --> 00:00:04,990
Welcome to the show - James,
I need to start with one tiny config flag

2
00:00:04,990 --> 00:00:11,915
that is absolutely not tiny in practice:
in Claude Code v2.

3
00:00:04,990 --> 00:00:11,915
1.121,

4
00:00:11,915 --> 00:00:15,514
you can puton an MCP server entry inor,

5
00:00:15,514 --> 00:00:20,179
and that means the server's tools load at
session START instead of waiting

6
00:00:20,179 --> 00:00:25,775
for tool-search to wake them up.
v2.

7
00:00:20,179 --> 00:00:25,775
1.121 and one boolean --

8
00:00:25,775 --> 00:00:27,842
that's the kind of release note people
skip,

9
00:00:27,842 --> 00:00:29,443
and then three weeks later they're like,

10
00:00:29,443 --> 00:00:33,599
"why does my workflow suddenly feel
better?" Because timing matters.

11
00:00:33,599 --> 00:00:37,281
If the tool enters on turn one instead of
turn six,

12
00:00:37,281 --> 00:00:40,563
the whole conversation shape changes.

13
00:00:37,281 --> 00:00:40,563
Exactly.

14
00:00:40,563 --> 00:00:43,202
And the pain it's solving is super
ordinary.

15
00:00:43,202 --> 00:00:45,602
You've got the same Postgres server,

16
00:00:45,602 --> 00:00:49,045
same internal API helper, same CI helper.

17
00:00:49,045 --> 00:00:50,325
Every session.

18
00:00:50,325 --> 00:00:54,531
But because of deferral, you sort of end
up nudging Claude like you're

19
00:00:54,531 --> 00:01:00,648
introducing two mates at a barbie - "nah,
use THAT one, the database one,

20
00:00:54,531 --> 00:01:00,648
the one we've used all week."

21
00:01:00,648 --> 00:01:03,718
It feels a bit
silly.Okay,

22
00:01:03,718 --> 00:01:06,278
but the deferral existed for a reason.

23
00:01:06,278 --> 00:01:11,396
If you've got, say, 30-plus tools sitting
behind a giant MCP catalog,

24
00:01:11,396 --> 00:01:14,952
loading all of that up front is how you
quietly torch context before

25
00:01:14,952 --> 00:01:16,197
the first useful answer.

26
00:01:16,197 --> 00:01:19,320
That's not paranoia - that's just
budgeting.

27
00:01:19,320 --> 00:01:23,360
Tokens spent early are still tokens gone.

28
00:01:19,320 --> 00:01:23,360
Right,

29
00:01:23,360 --> 00:01:28,703
and that's the distinction people have
gotta keep straight:is NOT "turn off

30
00:01:23,360 --> 00:01:28,703
deferral everywhere."

31
00:01:28,703 --> 00:01:30,274
It's per server.

32
00:01:30,274 --> 00:01:31,632
That's the whole trick.

33
00:01:31,632 --> 00:01:35,320
You leave the weird exploratory servers
lazy-loaded,

34
00:01:35,320 --> 00:01:40,611
and you pin the two or three workhorse
servers you touch constantly.

35
00:01:35,320 --> 00:01:40,611
Per-server

36
00:01:40,611 --> 00:01:41,919
is the important phrase there.

37
00:01:41,919 --> 00:01:42,956
Not global.

38
00:01:42,956 --> 00:01:48,636
So let me try to explain it
back: if I have one MCP server for

39
00:01:48,636 --> 00:01:53,735
my everyday Postgres queries and another
for some giant rarely-used internal

40
00:01:53,735 --> 00:01:56,470
docs system, I can seton the Postgres one,

41
00:01:56,470 --> 00:02:01,280
but keep the docs server deferred until
tool-search actually needs it?

42
00:01:56,470 --> 00:02:01,280
Yep

43
00:02:01,280 --> 00:02:02,120
- that's it.

44
00:02:02,120 --> 00:02:05,258
Almost like pinning your favorite spanner
on the pegboard and leaving

45
00:02:05,258 --> 00:02:06,682
the rest in the drawer.

46
00:02:06,682 --> 00:02:10,561
The good stuff is in reach,
the clutter stays out of the way.

47
00:02:10,561 --> 00:02:14,283
And because you can put it in the
project-levelor the user-level,

48
00:02:14,283 --> 00:02:20,147
you've got a nice split between team
defaults and your own personal setup.

49
00:02:14,283 --> 00:02:20,147
Thatversussplit

50
00:02:20,147 --> 00:02:22,041
is actually bigger than it sounds.

51
00:02:22,041 --> 00:02:24,519
Project-level means a team can decide,

52
00:02:24,519 --> 00:02:30,529
"our internal API server is
mission-critical,

53
00:02:24,519 --> 00:02:30,529
load it every time." User-level

54
00:02:30,529 --> 00:02:35,305
means I can keep my own weird toolbox
without forcing it on everyone

55
00:02:30,529 --> 00:02:35,305
else.

56
00:02:35,305 --> 00:02:39,291
Yeah, and that's where this stops being a
nerdy config footnote and becomes

57
00:02:39,291 --> 00:02:40,638
workflow design.

58
00:02:40,638 --> 00:02:45,553
In my web-dev world, the annoying part
isn't just waiting - it's

59
00:02:40,638 --> 00:02:45,553
context-switching.

60
00:02:45,553 --> 00:02:49,048
If I'm halfway through tracing a bug and
Claude still hasn't got the

61
00:02:49,048 --> 00:02:52,756
DB tool in play,
I have to interrupt the task to steer it.

62
00:02:52,756 --> 00:02:54,240
That's friction.

63
00:02:54,240 --> 00:02:58,363
Tiny friction, but it stacks up like
sawdust in the shed.

64
00:02:54,240 --> 00:02:58,363
And I think

65
00:02:58,363 --> 00:03:04,584
the counterpoint is healthy: if you load
30 tools because "maybe I'll need them,"

66
00:03:04,584 --> 00:03:07,360
you've recreated the worst kind of
startup bloat.

67
00:03:07,360 --> 00:03:11,112
It's like opening every tab you'll
possibly need for a research session

68
00:03:11,112 --> 00:03:14,316
and then wondering why your laptop sounds
like a leaf blower.

69
00:03:14,316 --> 00:03:20,138
The escape hatch is useful precisely
because it's narrow.A browser

70
00:03:20,138 --> 00:03:22,161
with 97 tabs is a cry for help,

71
00:03:22,161 --> 00:03:22,441
mate.

72
00:03:22,441 --> 00:03:24,997
But yes - narrow is the point.

73
00:03:24,997 --> 00:03:29,760
Claude Code is basically saying: we still
believe in tool-search deferral,

74
00:03:29,760 --> 00:03:32,679
because giant catalogs can bloat the
context window.

75
00:03:32,679 --> 00:03:35,719
We are just admitting that,
for a few servers,

76
00:03:35,719 --> 00:03:39,993
deferral flips from safety into nuisance.

77
00:03:35,719 --> 00:03:39,993
And that's the part I'd want

78
00:03:39,993 --> 00:03:43,476
listeners to remember: this doesn't kill
lazy-loading.

79
00:03:43,476 --> 00:03:46,786
It lets you choose where laziness is
smart and where it's just getting

80
00:03:46,786 --> 00:03:47,600
in the way.

81
00:03:47,600 --> 00:03:53,223
That's a very different philosophy from
"load everything" or "load nothing."The

82
00:03:53,223 --> 00:03:59,166
same v2.

83
00:03:53,223 --> 00:03:59,166
1.121 release had a second change that I
think is actually more

84
00:03:59,166 --> 00:03:59,966
explosive.

85
00:03:59,966 --> 00:04:06,123
PostToolUse got widened socan replace the
output of ANY built-in tool,

86
00:04:06,123 --> 00:04:07,801
not just MCP tools.

87
00:04:07,801 --> 00:04:10,283
So now a hook can rewriteoutput,

88
00:04:10,283 --> 00:04:15,127
file reads, other native tool results -
before Claude sees them.[questioning

89
00:04:15,127 --> 00:04:16,920
tone] Wait - any built-in tool?

90
00:04:16,920 --> 00:04:18,880
Not just MCP?

91
00:04:18,880 --> 00:04:21,879
So ifspits out a log full of secrets,

92
00:04:21,879 --> 00:04:25,717
a hook can scrub that before Claude ever
reads it?

93
00:04:21,879 --> 00:04:25,717
Exactly.

94
00:04:25,717 --> 00:04:29,956
And "scrub secrets from shell output" is
one really practical use case.

95
00:04:29,956 --> 00:04:34,597
Another is normalizing noisy logs so the
model doesn't get distracted

96
00:04:34,597 --> 00:04:35,397
by garbage.

97
00:04:35,397 --> 00:04:39,079
Another is injecting context into a
result - like,

98
00:04:39,079 --> 00:04:43,312
basically shaping the tool output into a
cleaner object for Claude to

99
00:04:43,312 --> 00:04:47,642
reason over.

100
00:04:43,312 --> 00:04:47,642
That phrase -- is the bit that'll stick
for me,

101
00:04:47,642 --> 00:04:49,800
because it's deceptively tidy.

102
00:04:49,800 --> 00:04:51,321
It sounds like formatting.

103
00:04:51,321 --> 00:04:53,558
But this is more than formatting.

104
00:04:53,558 --> 00:04:58,921
If Claude acts on the rewritten output
instead of the raw output,

105
00:04:58,921 --> 00:05:00,997
you've moved the trust boundary.

106
00:05:00,997 --> 00:05:04,724
That's a big old shift.Yes.

107
00:05:04,724 --> 00:05:06,886
That's the exact tension.

108
00:05:06,886 --> 00:05:09,371
The automation upside is real,

109
00:05:09,371 --> 00:05:11,932
but Claude is now responding to the
edited version.

110
00:05:11,932 --> 00:05:14,407
So if your hook silently blanks a line,

111
00:05:14,407 --> 00:05:16,489
truncates something important,

112
00:05:16,489 --> 00:05:20,088
or mangles aresult,
Claude can continue on a false premise.

113
00:05:20,088 --> 00:05:24,623
Not because the model hallucinated -
because YOU fed it a distorted tool

114
00:05:24,623 --> 00:05:27,682
result.

115
00:05:24,623 --> 00:05:27,682
And that's nastier than a normal bug,

116
00:05:27,682 --> 00:05:29,681
hey, because it can look clean.

117
00:05:29,681 --> 00:05:33,441
If a shell command really failed loudly,

118
00:05:33,441 --> 00:05:34,321
you'd notice.

119
00:05:34,321 --> 00:05:39,756
If a hook politely rewrites that output
into something half-wrong...

120
00:05:39,756 --> 00:05:41,833
Claude strolls ahead like nothing
happened.

121
00:05:41,833 --> 00:05:45,663
That's the software equivalent of
painting over the check-engine light.

122
00:05:45,663 --> 00:05:50,156
Painting over the check-engine
light is perfect.

123
00:05:50,156 --> 00:05:53,587
And this is why I'd treat
hooks like production code,

124
00:05:53,587 --> 00:05:54,787
not glue code.

125
00:05:54,787 --> 00:05:56,147
Test them.

126
00:05:56,147 --> 00:05:56,867
Version them.

127
00:05:56,867 --> 00:05:59,184
Be explicit about what they redact,

128
00:05:59,184 --> 00:06:01,904
what they normalize, what they preserve.

129
00:06:01,904 --> 00:06:04,228
Because onceand file reads are in scope,

130
00:06:04,228 --> 00:06:09,138
the blast radius is way wider than "my
MCP integration is quirky."The

131
00:06:09,138 --> 00:06:11,802
phrase "blast radius" is bang on.

132
00:06:11,802 --> 00:06:15,004
Built-in tools are the bones of the
session.

133
00:06:15,004 --> 00:06:20,095
If you rewrite those, you're not just
accessorizing the workflow - you're

134
00:06:20,095 --> 00:06:23,075
changing the evidence Claude uses to
think.

135
00:06:23,075 --> 00:06:25,714
I mean, that's powerful...

136
00:06:25,714 --> 00:06:28,919
and a little spicy.And
tucked into that same release were

137
00:06:28,919 --> 00:06:31,638
two less flashy fixes that, honestly,

138
00:06:31,638 --> 00:06:33,638
might save more people actual pain.

139
00:06:33,638 --> 00:06:38,349
One fix addressed unbounded RSS growth
that could climb into MULTI-gigabyte

140
00:06:38,349 --> 00:06:40,443
territory during image-heavy sessions.

141
00:06:40,443 --> 00:06:44,814
Another fixed an almost 2 GB leak inon
machines with huge transcript

142
00:06:44,814 --> 00:06:45,406
histories.

143
00:06:45,406 --> 00:06:51,959
No config change, just upgrade.

144
00:06:45,406 --> 00:06:51,959
Multi-GB RSS during image-heavy sessions,

145
00:06:51,959 --> 00:06:56,674
and nearly 2 GB leaking in- those are not
cute little papercuts.

146
00:06:56,674 --> 00:07:00,193
That's your machine getting bogged down
while you're trying to work.

147
00:07:00,193 --> 00:07:03,148
And the nice bit is,
unlike the hooks stuff,

148
00:07:03,148 --> 00:07:05,545
there's no philosophical decision tree
there.

149
00:07:05,545 --> 00:07:08,400
Just update the thing.

150
00:07:05,545 --> 00:07:08,400
Right.

151
00:07:08,400 --> 00:07:09,841
One part of this release says,

152
00:07:09,841 --> 00:07:12,720
"here's more control." The memory fixes
say,

153
00:07:12,720 --> 00:07:16,931
"also, sorry, this should've been
tighter." I actually like

154
00:07:16,931 --> 00:07:17,839
that combination.

155
00:07:17,839 --> 00:07:22,252
Give people sharper tools,
but also reduce the background instability

156
00:07:22,252 --> 00:07:25,872
that makes power features scary.

157
00:07:22,252 --> 00:07:25,872
Though it does land us in an interesting

158
00:07:25,872 --> 00:07:26,400
spot.

159
00:07:26,400 --> 00:07:30,879
With, you're deciding what tools Claude
sees earlier.

160
00:07:30,879 --> 00:07:35,357
With, you're deciding what Claude thinks
those tools SAW.

161
00:07:35,357 --> 00:07:37,678
That's...

162
00:07:37,678 --> 00:07:39,515
not the same level of control.

163
00:07:39,515 --> 00:07:41,434
One is convenience.

164
00:07:41,434 --> 00:07:44,953
The other is epistemology with a config
file.

165
00:07:44,953 --> 00:07:47,520
That's the cleanest
way to put it.

166
00:07:47,520 --> 00:07:52,232
Claude Code is getting more configurable
at the tool boundary,

167
00:07:52,232 --> 00:07:53,197
which is great.

168
00:07:53,197 --> 00:07:56,316
But the more you rewrite inputs and
outputs,

169
00:07:56,316 --> 00:08:01,153
the more the real question stops being
what Claude can see - and becomes

170
00:08:01,153 --> 00:08:06,007
who gets to decide what it thinks it
saw.And if your team can't

171
00:08:06,007 --> 00:08:12,125
answer that clearly, maybe don't hand the
kangaroo the car keys just yet.

172
00:08:12,125 --> 00:08:13,483
Catch you next time.
