1
00:00:00,000 --> 00:00:02,320
So, I- I was fiddling around in the shed
the other night, right,

2
00:00:02,360 --> 00:00:06,880
and I ran into this absolute brain-bender
of a security exploit.

3
00:00:06,907 --> 00:00:10,480
It's- it's honestly like a visual magic
trick, but for your terminal.

4
00:00:10,640 --> 00:00:13,520
You think you're approving a harmless
little command, like,

5
00:00:13,547 --> 00:00:18,240
uh, git status, but under the hood, the
raw bytes are actually executing something

6
00:00:18,320 --> 00:00:23,680
nasty like rm -rf or a rogue curl pipe to
bash.

7
00:00:24,125 --> 00:00:25,597
Wait, how is that even possible?

8
00:00:25,737 --> 00:00:29,277
Are we talking about the Unicode
Right-to-Left Override character?

9
00:00:29,421 --> 00:00:30,237
That...

10
00:00:30,253 --> 00:00:32,317
what is it, U+202E?

11
00:00:32,706 --> 00:00:33,453
Spot on, mate!

12
00:00:33,813 --> 00:00:36,213
U+202E.

13
00:00:36,303 --> 00:00:42,093
You drop that cheeky little character in,
or even some zero-width spaces like U+200B

14
00:00:42,200 --> 00:00:46,413
or homoglyphs-you know, those look-alike
quote characters-and the terminal

15
00:00:46,478 --> 00:00:48,813
completely flips the rendering direction.

16
00:00:48,925 --> 00:00:54,253
Your eyes see a nice, safe query, but the
shell is- is actually chewing on arbitrary

17
00:00:54,311 --> 00:00:55,133
injections.

18
00:00:55,240 --> 00:00:58,253
It's a proper Trojan horse for developer
agents.

19
00:00:58,394 --> 00:01:00,490
That is incredibly wild.

20
00:01:00,730 --> 00:01:04,970
So an AI assistant like Claude Code could
read a malicious repo,

21
00:01:05,030 --> 00:01:08,410
get tricked by those hidden characters,
and then show me a prompt saying,

22
00:01:08,570 --> 00:01:10,570
"Hey, want to run this harmless command?"

23
00:01:10,663 --> 00:01:12,730
while actually nuke-ing my system?

24
00:01:13,445 --> 00:01:13,551
Exactly!

25
00:01:13,657 --> 00:01:16,590
It bypasses the human-in-the-loop safety
completely.

26
00:01:16,770 --> 00:01:23,070
But, uh, that is exactly why Anthropic
just pushed out Claude Code version 2.1.211.

27
00:01:23,166 --> 00:01:26,030
They built this new visual sanitization
layer.

28
00:01:26,102 --> 00:01:30,430
Basically, it intercepts all those
permission previews right before they hit your

29
00:01:30,483 --> 00:01:31,870
terminal or chat channels.

30
00:01:32,057 --> 00:01:37,310
It strips or safely escapes those
deceptive Unicode blocks so what you see on the

31
00:01:37,367 --> 00:01:40,990
screen matches the actual execution
string, character for character.

32
00:01:41,213 --> 00:01:42,200
Ah, got it.

33
00:01:42,253 --> 00:01:44,760
So it aligns the raw bytes with the visual
layout.

34
00:01:44,947 --> 00:01:46,800
No more optical illusions.

35
00:01:46,870 --> 00:01:48,600
But what about custom setups?

36
00:01:48,632 --> 00:01:53,160
Like, if I'm running Claude Code in
auto-pilot mode inside a CI/CD pipeline,

37
00:01:53,180 --> 00:01:56,680
how does v2.1.211 handle those custom
hooks?

38
00:01:56,667 --> 00:01:58,507
Oh, they firmed up the floor there too.

39
00:01:58,827 --> 00:02:03,067
See, developers use these custom
PreToolUse hooks, right?

40
00:02:03,200 --> 00:02:07,307
If you're in Auto Mode, there was this
worry that it could somehow override your

41
00:02:07,355 --> 00:02:12,267
user-defined ask callback and run
unsandboxed Bash commands without ever prompting

42
00:02:12,307 --> 00:02:12,747
you.

43
00:02:12,847 --> 00:02:15,707
The new update basically hardens those
boundaries.

44
00:02:15,847 --> 00:02:19,307
And- and if you're paranoid like me and
want to see exactly what's happening under

45
00:02:19,327 --> 00:02:24,667
the hood, they added this new, uh,
--forward-subagent-text flag.

46
00:02:25,205 --> 00:02:25,957
Oh, interesting!

47
00:02:26,197 --> 00:02:28,277
Or you can use the environment variable,
right?

48
00:02:28,464 --> 00:02:31,477
CLAUDE_CODE_FORWARD_SUBAGENT_TEXT?

49
00:02:31,603 --> 00:02:32,098
You bet.

50
00:02:32,205 --> 00:02:36,818
It streams the raw JSON logs of the
subagent's actual thoughts and text.

51
00:02:37,031 --> 00:02:39,618
It's brilliant for deep security auditing.

52
00:02:39,738 --> 00:02:43,618
You can see precisely what the model is
plotting before it even tries to queue a

53
00:02:43,678 --> 00:02:44,338
command.

54
00:02:44,613 --> 00:02:45,213
I love that.

55
00:02:45,320 --> 00:02:47,613
It's like having a mind-reader for your
terminal agent.

56
00:02:47,793 --> 00:02:51,773
Hey, did they also fix that annoying issue
with the session cost tracking?

57
00:02:51,880 --> 00:02:56,173
Every time I tried to clear my screen, the
cost counter would just linger there,

58
00:02:56,233 --> 00:02:57,773
mocking my API spend.

59
00:02:58,485 --> 00:03:00,112
Oh, tell me about it!

60
00:03:00,172 --> 00:03:04,032
Nothing worse than staring at a giant bill
when you've just cleared the deck.

61
00:03:04,192 --> 00:03:09,472
Yes, the /clear command now actually
resets the statusline's running session cost

62
00:03:09,562 --> 00:03:13,632
counter back to a clean, beautiful zero
dollars.

63
00:03:13,792 --> 00:03:17,312
Plus, they fixed the Vim normal mode
bindings.

64
00:03:17,654 --> 00:03:19,132
Wait, the Vim bindings?

65
00:03:19,276 --> 00:03:20,972
Like the substitute keys?

66
00:03:21,246 --> 00:03:23,438
Yeah, the s and S keybindings.

67
00:03:23,518 --> 00:03:26,598
They finally behave like the traditional
editor again.

68
00:03:26,718 --> 00:03:30,478
So, no more getting tripped up when you're
jumping around your terminal.

69
00:03:30,638 --> 00:03:32,558
It's a solid little update, honestly.

70
00:03:32,745 --> 00:03:36,798
Kept me from accidentally nuking my trail
bike design files this morning.

71
00:03:37,677 --> 00:03:40,712
Alright, definitely upgrading my CLI
before I do anything else today.

72
00:03:40,856 --> 00:03:42,232
Good chatting, Lachlan!

73
00:03:42,250 --> 00:03:42,970
No worries, mate.

74
00:03:43,010 --> 00:03:43,610
Catch you later.

