1
00:00:00,140 --> 00:00:03,939
So, I- I was out in the shed the other
night, right, trying to get Claude Code to

2
00:00:03,959 --> 00:00:09,239
spin up a global npm package inside a dev
container, and- mate,

3
00:00:09,439 --> 00:00:10,859
it was like hitting a brick wall.

4
00:00:11,859 --> 00:00:12,779
This classic...

5
00:00:13,239 --> 00:00:14,500
double-sandbox headache.

6
00:00:14,941 --> 00:00:15,361
Oh, yeah.

7
00:00:15,881 --> 00:00:19,341
Because if you're already running inside
Docker or a GitHub Actions runner,

8
00:00:19,801 --> 00:00:21,081
you've already got isolation.

9
00:00:21,641 --> 00:00:24,542
Then Claude tries to spin up its *own*
sandbox on top of that,

10
00:00:24,601 --> 00:00:25,221
and suddenly...

11
00:00:25,417 --> 00:00:31,097
And suddenly it-it-it can't write to
~/.kube or run a simple global tool install

12
00:00:31,137 --> 00:00:33,657
without throwing a massive fit about
permissions.

13
00:00:33,737 --> 00:00:34,857
But- but here's the thing.

14
00:00:35,070 --> 00:00:39,337
If you turn the sandbox completely off,
you lose all the guardrails.

15
00:00:39,497 --> 00:00:45,897
A rogue package dependency could just-
zip!-exfiltrate your .ssh keys or AWS

16
00:00:45,950 --> 00:00:49,097
credentials to some random IP in the
middle of the night.

17
00:00:49,363 --> 00:00:50,062
Exactly.

18
00:00:50,323 --> 00:00:54,182
The network egress control is the actual
lifesaver there.

19
00:00:54,222 --> 00:00:59,822
But in this new v2.1.216 release, they've
finally decoupled them.

20
00:00:59,883 --> 00:01:01,462
They introduced this new setting...

21
00:01:01,583 --> 00:01:04,103
uh, sandbox.filesystem.disabled.

22
00:01:04,125 --> 00:01:07,165
sandbox.filesystem.disabled.

23
00:01:07,389 --> 00:01:11,885
Yeah, you just- you just chuck that nested
JSON key into your global

24
00:01:12,125 --> 00:01:16,605
~/.claude/settings.json, or even your
local project config.

25
00:01:16,792 --> 00:01:21,805
It completely skips the local filesystem
isolation-so no more messing around with

26
00:01:21,875 --> 00:01:26,765
endless allowWrite arrays-but it keeps the
built-in proxy server running.

27
00:01:26,750 --> 00:01:31,990
Right, so Claude can write freely to your
local system, but the moment a sketchy

28
00:01:32,030 --> 00:01:35,710
script tries to ping some external domain
to dump your credentials,

29
00:01:35,730 --> 00:01:37,470
the network block still catches it.

30
00:01:37,657 --> 00:01:40,270
It's the perfect middle ground for dev
containers.

31
00:01:40,549 --> 00:01:41,129
Exactly!

32
00:01:41,509 --> 00:01:42,069
Spot on.

33
00:01:42,529 --> 00:01:46,789
Now, the- the other thing that was
absolutely killing me on long sessions was this-

34
00:01:46,929 --> 00:01:48,129
this massive lag.

35
00:01:48,609 --> 00:01:51,850
Like, you're fifty turns deep into
debugging a gnarly state issue,

36
00:01:52,349 --> 00:01:54,949
and suddenly every single command takes...

37
00:01:56,590 --> 00:01:58,969
I don't know, three, four seconds just to
respond.

38
00:01:59,042 --> 00:02:03,122
That was the quadratic slowdown in the
message normalization process.

39
00:02:03,210 --> 00:02:09,442
Basically, every single turn you took, the
CLI had to- to normalize the entire

40
00:02:09,512 --> 00:02:13,442
history, and that cost scaled
quadratically with the number of turns.

41
00:02:13,602 --> 00:02:17,282
So fifty turns in, it's doing a mountain
of redundant work.

42
00:02:17,292 --> 00:02:19,692
Yeah, it-it-it was flat out painful.

43
00:02:19,872 --> 00:02:24,012
But they've flattened that cost in
2.1.216.

44
00:02:24,172 --> 00:02:27,052
The resume times now are...

45
00:02:27,084 --> 00:02:28,652
well, they're snappy again.

46
00:02:28,892 --> 00:02:32,812
No more making a cuppa while the terminal
thinks about its life choices.

47
00:02:33,814 --> 00:02:37,855
Well, and there's one more fix in this
patch that is honestly a huge deal for

48
00:02:37,954 --> 00:02:38,335
safety.

49
00:02:38,954 --> 00:02:41,715
It's how they handle the AskUserQuestion
tool.

50
00:02:41,989 --> 00:02:44,190
Ah, the rogue agent drift.

51
00:02:44,609 --> 00:02:45,369
I've had this happen!

52
00:02:45,869 --> 00:02:48,789
Claude asks a question, and I type
something like, "Hold on,

53
00:02:49,089 --> 00:02:52,069
let me double-check that," and the parser
somehow thinks...

54
00:02:52,167 --> 00:02:55,527
--thinks you said "yes" or gave approval
to proceed!

55
00:02:55,740 --> 00:02:57,367
It would just run wild.

56
00:02:57,627 --> 00:03:02,887
Now, they've wrapped those free-text user
answers in neutral phrasing wrappers.

57
00:03:03,127 --> 00:03:09,127
So when you say "Wait" or "Hold on," the
model actually registers it as a stop and

58
00:03:09,180 --> 00:03:13,287
waits for you, instead of drifting off
into executing code you didn't approve.

59
00:03:13,292 --> 00:03:16,492
Which is massive when you're letting an
agent loose on your codebase.

60
00:03:16,682 --> 00:03:20,732
Alright, I'm gonna go update my global
config right now.

61
00:03:20,750 --> 00:03:21,230
Do it.

62
00:03:21,270 --> 00:03:21,630
See ya.

