1
00:00:00,000 --> 00:00:01,563
Welcome to the show.

2
00:00:01,563 --> 00:00:07,557
James, I wanna start with a tiny file
that suddenly got a lot more powerful:

3
00:00:07,557 --> 00:00:11,195
~/.claude/settings.

4
00:00:07,557 --> 00:00:11,195
json.

5
00:00:11,195 --> 00:00:18,356
In version 2.

6
00:00:11,195 --> 00:00:18,356
1.119, a bunch of stuff people changed
through /config stopped

7
00:00:18,356 --> 00:00:22,636
being floaty session fluff and started
writing into that file for real.

8
00:00:22,636 --> 00:00:28,064
So theme, editor mode, verbose output --
the things you'd poke in the

9
00:00:28,064 --> 00:00:32,378
moment -- now survive a restart instead
of vanishing like a snag off the

10
00:00:32,378 --> 00:00:38,482
barbie.Wait -- 2.

11
00:00:32,378 --> 00:00:38,482
1.119 is the line in the sand?

12
00:00:38,482 --> 00:00:40,922
Because that matters.

13
00:00:40,922 --> 00:00:44,885
If I flipped verbose output before 2.

14
00:00:40,922 --> 00:00:44,885
1.119,

15
00:00:44,885 --> 00:00:47,765
quit, came back, and it was gone...

16
00:00:47,765 --> 00:00:49,283
that wasn't me imagining it.

17
00:00:49,283 --> 00:00:53,640
That setting literally lived as session
state?

18
00:00:49,283 --> 00:00:53,640
Exactly.

19
00:00:53,640 --> 00:00:58,601
Before 2.

20
00:00:53,640 --> 00:00:58,601
1.119, you could change something in
/config and think,

21
00:00:58,601 --> 00:01:02,197
sweet, sorted -- and then relaunch and
it'd disappear.

22
00:01:02,197 --> 00:01:07,601
Or, worse, you'd get surprised because
some other scope overrode it later.

23
00:01:07,601 --> 00:01:12,116
Now the mental model's cleaner: if it's a
real setting changed there,

24
00:01:12,116 --> 00:01:18,272
it gets written to ~/.claude/settings.

25
00:01:12,116 --> 00:01:18,272
json at the user level.

26
00:01:18,272 --> 00:01:23,280
And that phrase you used -- "some other
scope" -- is the whole game,

27
00:01:23,280 --> 00:01:23,842
right?

28
00:01:23,842 --> 00:01:26,481
Because the surprise is not just
persistence.

29
00:01:26,481 --> 00:01:27,917
It's precedence.

30
00:01:27,917 --> 00:01:31,597
Once you write to ~/.claude/settings.

31
00:01:27,917 --> 00:01:31,597
json,

32
00:01:31,597 --> 00:01:33,159
you're in a stack.

33
00:01:33,159 --> 00:01:37,763
User global at ~/.claude/settings.

34
00:01:33,159 --> 00:01:37,763
json,

35
00:01:37,763 --> 00:01:41,322
project at .claude/settings.

36
00:01:37,763 --> 00:01:41,322
json,

37
00:01:41,322 --> 00:01:44,320
and then managed policy above
both?Yep.

38
00:01:44,320 --> 00:01:46,196
That's the upgrade in thinking.

39
00:01:46,196 --> 00:01:50,770
Claude Code is now much more obviously
living in the same multi-scope

40
00:01:50,770 --> 00:01:54,073
world as CLAUDE.

41
00:01:50,770 --> 00:01:54,073
md and programmatic config.

42
00:01:54,073 --> 00:01:58,790
So instead of /config feeling like a side
panel with vibes,

43
00:01:58,790 --> 00:02:02,309
it's part of a proper hierarchy: your
global defaults,

44
00:02:02,309 --> 00:02:07,063
the repo's defaults, then policy if your
org manages things.[responds

45
00:02:07,063 --> 00:02:09,680
quickly] I'm grabbing onto "CLAUDE.

46
00:02:07,063 --> 00:02:09,680
md" there,

47
00:02:09,680 --> 00:02:12,039
because that's the analogy that makes it
click for me.

48
00:02:12,039 --> 00:02:16,647
People already understand that one file
can set expectations globally

49
00:02:16,647 --> 00:02:19,447
and another can narrow them in a project.

50
00:02:19,447 --> 00:02:24,557
So now /config isn't outside the system
anymore -- it's feeding one layer

51
00:02:24,557 --> 00:02:25,880
of it.

52
00:02:24,557 --> 00:02:25,880
That's it.

53
00:02:25,880 --> 00:02:28,886
And I think this changes how developers
feel the tool,

54
00:02:28,886 --> 00:02:30,047
not just how it works.

55
00:02:30,047 --> 00:02:33,327
If your theme sticks, okay, nice.

56
00:02:33,327 --> 00:02:36,368
If your editor mode sticks, also nice.

57
00:02:36,368 --> 00:02:39,769
But verbose output is the spicy one.

58
00:02:39,769 --> 00:02:43,625
Because that sounds cosmetic until you've
built a workflow around seeing

59
00:02:43,625 --> 00:02:44,817
more detail.

60
00:02:44,817 --> 00:02:46,900
Then it's not really a preference anymore,

61
00:02:46,900 --> 00:02:47,501
it's like...

62
00:02:47,501 --> 00:02:50,221
your dashboard layout in a race car.

63
00:02:50,221 --> 00:02:53,282
Move one mirror and suddenly you're
driving weird.

64
00:02:53,282 --> 00:02:56,207
Yeah, was verbose mode ever "just UI"?

65
00:02:56,207 --> 00:02:57,727
I don't think so.

66
00:02:57,727 --> 00:03:02,187
If somebody depends on verbose output to
understand tool behavior or

67
00:03:02,187 --> 00:03:06,047
trace what happened, losing it on
relaunch changes how they work.

68
00:03:06,047 --> 00:03:08,447
That's not dark mode versus light mode.

69
00:03:08,447 --> 00:03:13,478
That's operational.Right --
one's wallpaper,

70
00:03:13,478 --> 00:03:14,999
the other's instrument panel.

71
00:03:14,999 --> 00:03:19,882
And before this change, I can easily
picture someone toggling verbose

72
00:03:19,882 --> 00:03:23,090
on every morning like some daft little
ritual,

73
00:03:23,090 --> 00:03:26,850
not realizing the product basically
treated it as temporary.

74
00:03:26,850 --> 00:03:30,364
I've done versions of that in dev tools
myself.

75
00:03:30,364 --> 00:03:36,079
You think, "Why do I keep redoing this?"
Then three weeks later you realize

76
00:03:36,079 --> 00:03:38,036
the setting was never saved anywhere.

77
00:03:38,036 --> 00:03:41,837
Makes you feel like you've been kicking
your own trail bike wondering

78
00:03:41,837 --> 00:03:46,801
why it won't start.The "every
morning ritual" is real.

79
00:03:46,801 --> 00:03:51,592
But there's another tension here:
persistence sounds good until the wrong

80
00:03:51,592 --> 00:03:52,807
thing persists.

81
00:03:52,807 --> 00:03:56,965
If someone was using /config as an
in-the-moment override,

82
00:03:56,965 --> 00:04:03,843
2.

83
00:03:56,965 --> 00:04:03,843
1.119 means that choice now sticks in
~/.claude/settings.

84
00:03:56,965 --> 00:04:03,843
json.

85
00:04:03,843 --> 00:04:09,469
So after upgrading, you can inherit your
own old impulse decisions.

86
00:04:09,469 --> 00:04:09,878
Yeah...

87
00:04:09,878 --> 00:04:11,404
and that's where this gets interesting.

88
00:04:11,404 --> 00:04:16,926
The old pain was "why didn't it stick?"
The new pain,

89
00:04:16,926 --> 00:04:19,566
for a few people, might be "hang on,

90
00:04:19,566 --> 00:04:24,608
why IS it still like this?" But I'd still
take the new problem.

91
00:04:24,608 --> 00:04:27,326
At least now it behaves like real
configuration.

92
00:04:27,326 --> 00:04:30,803
Real config can be inspected,
reasoned about,

93
00:04:30,803 --> 00:04:32,441
checked against project settings.

94
00:04:32,441 --> 00:04:38,051
Slippery session state is just
ghosts.And ghosts are brutal

95
00:04:38,051 --> 00:04:38,876
in tooling.

96
00:04:38,876 --> 00:04:41,437
Because when something disappears between
sessions,

97
00:04:41,437 --> 00:04:43,119
you blame yourself.

98
00:04:43,119 --> 00:04:49,857
When it's in ~/.claude/settings.

99
00:04:43,119 --> 00:04:49,857
json and the project has
.claude/settings.

100
00:04:43,119 --> 00:04:49,857
json

101
00:04:49,857 --> 00:04:53,436
and policy sits on top,
you can actually debug it.

102
00:04:53,436 --> 00:04:58,018
You can ask: which layer won?That phrase -- "which layer

103
00:04:58,018 --> 00:05:00,954
won?" -- is the whole listener takeaway
for me.

104
00:05:00,954 --> 00:05:06,954
After 2.

105
00:05:00,954 --> 00:05:06,954
1.119, /config isn't just a momentary
knob-twiddle.

106
00:05:06,954 --> 00:05:09,441
It writes into the config stack.

107
00:05:09,441 --> 00:05:15,280
And once you understand that,
a lot of weirdness stops being weird.

108
00:05:09,441 --> 00:05:15,280
So

109
00:05:15,280 --> 00:05:18,835
let's do the team angle, because this is
where the change gets properly

110
00:05:18,835 --> 00:05:19,635
useful.

111
00:05:19,635 --> 00:05:23,316
If a repo has .claude/settings.

112
00:05:19,635 --> 00:05:23,316
json,

113
00:05:23,316 --> 00:05:27,923
a team can set project defaults there and
everybody who contributes inherits

114
00:05:27,923 --> 00:05:29,153
them automatically.

115
00:05:29,153 --> 00:05:33,620
No more "hey, did you remember to toggle
the thing in /config?" for every

116
00:05:33,620 --> 00:05:37,519
new dev, contractor, or sleepy teammate
on a Monday.That's such

117
00:05:37,519 --> 00:05:38,599
a clean win.

118
00:05:38,599 --> 00:05:43,558
.claude/settings.

119
00:05:38,599 --> 00:05:43,558
json becomes the campfire rules for the
repo.

120
00:05:43,558 --> 00:05:46,278
You rock up, open the project,

121
00:05:46,278 --> 00:05:48,113
and the defaults are just there.

122
00:05:48,113 --> 00:05:52,855
Nobody's passing around screenshots of
menus or a dodgy setup doc from

123
00:05:52,855 --> 00:05:57,775
eight months ago.

124
00:05:52,855 --> 00:05:57,775
But -- and this is the enterprise catch
-- managed policy

125
00:05:57,775 --> 00:05:59,120
still wins.

126
00:05:59,120 --> 00:06:00,640
That's important.

127
00:06:00,640 --> 00:06:04,643
If a company policy pins a model or
disables a tool,

128
00:06:04,643 --> 00:06:06,890
your local /config change can be ignored.

129
00:06:06,890 --> 00:06:10,730
Same if the project setting is more
specific than your user default.

130
00:06:10,730 --> 00:06:15,819
So persistence does not mean absolute
control.Which is exactly

131
00:06:15,819 --> 00:06:17,402
the kind of thing that trips people up.

132
00:06:17,402 --> 00:06:20,761
They go, "But I changed it locally!" Yeah,

133
00:06:20,761 --> 00:06:24,364
mate, but managed policy is sitting on
top like the final boss.

134
00:06:24,364 --> 00:06:28,927
If policy says no tool,
or the project pins the model,

135
00:06:28,927 --> 00:06:34,690
your shiny local preference in
~/.claude/settings.

136
00:06:28,927 --> 00:06:34,690
json doesn't get the

137
00:06:34,690 --> 00:06:39,117
last word."Pinned a model" is the
token I'd underline.

138
00:06:39,117 --> 00:06:42,312
Because that's the silent override
problem in one phrase.

139
00:06:42,312 --> 00:06:46,773
A developer can think /config is broken
when it's actually obeying a

140
00:06:46,773 --> 00:06:47,917
higher scope.

141
00:06:47,917 --> 00:06:53,195
The software is being consistent; the
human mental model is what lags.

142
00:06:47,917 --> 00:06:53,195
And

143
00:06:53,195 --> 00:06:55,724
honestly, 2.

144
00:06:53,195 --> 00:06:55,724
1.119 helps there too,

145
00:06:55,724 --> 00:06:59,561
because at least now the local part is
visible and persistent.

146
00:06:59,561 --> 00:07:04,843
You can audit ~/.claude/settings.

147
00:06:59,561 --> 00:07:04,843
json after upgrading.

148
00:07:04,843 --> 00:07:09,277
That's not just housekeeping -- it
matters because some people were using

149
00:07:09,277 --> 00:07:14,005
/config as a workaround precisely because
settings used to reset between

150
00:07:14,005 --> 00:07:14,509
sessions.

151
00:07:14,509 --> 00:07:19,398
Those workaround toggles may now hang
around.Yeah,

152
00:07:19,398 --> 00:07:22,720
"audit after upgrading" is the practical
advice.

153
00:07:22,720 --> 00:07:27,720
Open ~/.claude/settings.

154
00:07:22,720 --> 00:07:27,720
json and see what's in there.

155
00:07:27,720 --> 00:07:31,640
If you were repeatedly setting something
because it never persisted before,

156
00:07:31,640 --> 00:07:32,919
now it may persist.

157
00:07:32,919 --> 00:07:36,657
And that can be good or bad depending on
whether that setting was a true

158
00:07:36,657 --> 00:07:41,805
preference or just a temporary patch.

159
00:07:36,657 --> 00:07:41,805
It's a bit like finding sticky notes

160
00:07:41,805 --> 00:07:43,609
you forgot you left under the desk.

161
00:07:43,609 --> 00:07:46,169
They were never the system...

162
00:07:46,169 --> 00:07:47,928
until suddenly they are.

163
00:07:47,928 --> 00:07:51,205
And for teams, this is healthier.

164
00:07:51,205 --> 00:07:57,356
Put the durable team defaults in
.claude/settings.

165
00:07:51,205 --> 00:07:57,356
json.

166
00:07:57,356 --> 00:08:03,033
Leave personal stuff in
~/.claude/settings.

167
00:07:57,356 --> 00:08:03,033
json.

168
00:08:03,033 --> 00:08:07,845
Expect policy to overrule both if you're
in an enterprise setup.

169
00:08:07,845 --> 00:08:09,605
Nice and orderly.

170
00:08:09,605 --> 00:08:16,397
For once, the ducks are roughly in a row.

171
00:08:09,605 --> 00:08:16,397
Two quick additions here are

172
00:08:16,397 --> 00:08:20,752
worth calling out because they fit the
same theme: less hidden friction.

173
00:08:20,752 --> 00:08:23,914
One is prUrlTemplate.

174
00:08:23,914 --> 00:08:28,326
That can redirect the footer PR badge to
a custom review system -- GitHub

175
00:08:28,326 --> 00:08:30,912
Enterprise, Gerrit, or some internal tool.

176
00:08:30,912 --> 00:08:34,587
So if your org doesn't live on plain
github.

177
00:08:30,912 --> 00:08:34,587
com,

178
00:08:34,587 --> 00:08:38,440
the link can point where your reviews
actually happen.And that's

179
00:08:38,440 --> 00:08:40,001
not just cosmetic either.

180
00:08:40,001 --> 00:08:42,484
"Footer PR badge" sounds small,

181
00:08:42,484 --> 00:08:46,518
but if it lands in GitHub Enterprise or
Gerrit instead of the wrong place,

182
00:08:46,518 --> 00:08:49,436
that's one less paper cut every single
review.

183
00:08:49,436 --> 00:08:54,797
Tiny things done fifty times a week
become the whole weather.

184
00:08:49,436 --> 00:08:54,797
Exactly.

185
00:08:54,797 --> 00:08:59,515
And the other one: --from-pr now supports
more than github.

186
00:08:54,797 --> 00:08:59,515
com PR URLs.

187
00:08:59,515 --> 00:09:01,830
It works with GitLab merge requests,

188
00:09:01,830 --> 00:09:05,831
Bitbucket pull requests,
and GitHub Enterprise PR URLs too.

189
00:09:05,831 --> 00:09:09,441
That's a pretty concrete widening of the
on-ramp.GitLab

190
00:09:09,441 --> 00:09:11,957
merge requests, Bitbucket pull requests,

191
00:09:11,957 --> 00:09:16,799
GitHub Enterprise PR URLs -- that trio
tells you who this is for.

192
00:09:16,799 --> 00:09:19,446
Not just the default public GitHub crowd.

193
00:09:19,446 --> 00:09:23,743
Teams with oddball, legacy, or
locked-down setups get to stop pretending

194
00:09:23,743 --> 00:09:27,103
they're second-class
citizens.And that might be

195
00:09:23,743 --> 00:09:27,103
the bigger

196
00:09:27,103 --> 00:09:28,563
story underneath all of this.

197
00:09:28,563 --> 00:09:34,006
2.

198
00:09:28,563 --> 00:09:34,006
1.119 makes /config less magical and more
legible.

199
00:09:34,006 --> 00:09:36,162
Settings live in files.

200
00:09:36,162 --> 00:09:37,962
Files have scopes.

201
00:09:37,962 --> 00:09:39,600
Scopes have precedence.

202
00:09:39,600 --> 00:09:42,876
Links point to the review systems people
actually use.

203
00:09:42,876 --> 00:09:48,480
It's less "trust the UI" and more
"understand the stack."Yeah.

204
00:09:48,480 --> 00:09:53,609
And once a tool crosses that line -- from
temporary convenience into

205
00:09:53,609 --> 00:09:59,234
explicit, layered config -- teams start
depending on it differently.

206
00:09:59,234 --> 00:10:00,874
Not like a toy menu.

207
00:10:00,874 --> 00:10:03,034
Like infrastructure.

208
00:10:03,034 --> 00:10:10,754
Anyway, check your ~/.claude/settings.

209
00:10:03,034 --> 00:10:10,754
json before it checks you.

210
00:10:10,754 --> 00:10:13,480
Catch you next time.

211
00:10:10,754 --> 00:10:13,480
See you.
