1
00:00:00,740 --> 00:00:04,219
James, you are not going to believe the
bug I was tracing this morning.

2
00:00:04,739 --> 00:00:06,980
It is a absolute classic.

3
00:00:07,519 --> 00:00:08,399
Picture this, right?

4
00:00:09,000 --> 00:00:13,960
A developer named Ursula, she is working
on Windows, opens up the new Claude Code

5
00:00:14,119 --> 00:00:16,680
CLI tool, and tries to index her project.

6
00:00:17,260 --> 00:00:17,840
And boom!

7
00:00:18,379 --> 00:00:19,239
Everything breaks.

8
00:00:19,719 --> 00:00:24,039
The tool completely loses its mind, files
in her user directory are suddenly

9
00:00:24,059 --> 00:00:27,639
inaccessible, throwing these bizarre
errors, or even worse,

10
00:00:28,039 --> 00:00:32,979
rendering her folder names as corrupted
Chinese, Japanese, and Korean CJK characters

11
00:00:33,020 --> 00:00:33,639
in the console.

12
00:00:34,446 --> 00:00:36,226
Wait, CJK characters?

13
00:00:36,667 --> 00:00:38,286
From a local file path on Windows?

14
00:00:38,806 --> 00:00:42,507
That sounds like some weird AI
hallucination or a corrupted workspace,

15
00:00:43,087 --> 00:00:46,366
but I bet it is actually something way
more mundane under the hood.

16
00:00:46,801 --> 00:00:47,621
Spot on, mate!

17
00:00:48,061 --> 00:00:50,361
It is not the AI acting up at all.

18
00:00:50,721 --> 00:00:55,821
It is a classic JSON escape character
collision, and it was just patched in version

19
00:00:56,002 --> 00:00:57,342
2.1.218.

20
00:00:58,241 --> 00:01:02,422
It turns out, Ursula was trying to load a
path like C, colon,

21
00:01:02,722 --> 00:01:07,661
backslash, Users, backslash, ursula,
backslash, project.

22
00:01:08,382 --> 00:01:10,901
And that is where the trap snaps shut.

23
00:01:11,502 --> 00:01:11,742
Oh!

24
00:01:12,222 --> 00:01:14,962
Backslash, Users, backslash, ursula.

25
00:01:15,563 --> 00:01:17,602
The backslash followed by the letter u.

26
00:01:18,342 --> 00:01:23,102
In programming, backslash u is the prefix
for a Unicode escape sequence!

27
00:01:23,426 --> 00:01:23,946
Yes!

28
00:01:24,206 --> 00:01:24,866
Exactly!

29
00:01:25,106 --> 00:01:25,706
You nailed it.

30
00:01:26,366 --> 00:01:30,306
When the tool serialized that path into a
JSON payload for the LLM to read,

31
00:01:30,766 --> 00:01:32,927
it did not double escape the backslashes.

32
00:01:33,646 --> 00:01:37,366
So the JSON parser saw backslash u and
thought, oh, beauty,

33
00:01:37,686 --> 00:01:40,347
here comes a four digit hexadecimal
Unicode character.

34
00:01:41,066 --> 00:01:46,226
It grabbed the next four characters, which
were r, s, u, and l from her name ursula,

35
00:01:46,686 --> 00:01:51,906
tried to parse rsul as hex digits, and
either completely choked or spat out total

36
00:01:51,966 --> 00:01:52,546
mojibake.

37
00:01:53,084 --> 00:01:55,204
That is hilarious and painful.

38
00:01:55,865 --> 00:02:00,424
The letter r is definitely not a valid hex
character, so no wonder it crashed.

39
00:02:01,085 --> 00:02:04,965
And if her username had been, I do not
know, something starting with a,

40
00:02:05,104 --> 00:02:11,245
b, c, d, e, or f, like uh, Fred, then
backslash u, f, r, e,

41
00:02:11,444 --> 00:02:15,244
d would actually parse as some random CJK
character!

42
00:02:15,864 --> 00:02:16,725
That is wild.

43
00:02:17,412 --> 00:02:18,571
It is brilliant, right?

44
00:02:19,151 --> 00:02:23,551
So if your name is Fred, you get weird
symbols, and if your name is Ursula,

45
00:02:23,951 --> 00:02:25,431
you just get a flat out crash.

46
00:02:25,911 --> 00:02:30,792
But the good news is, Anthropic fixed this
in version 2.1.218.

47
00:02:31,252 --> 00:02:34,571
They made sure all Windows backslashes are
strictly double escaped,

48
00:02:35,052 --> 00:02:40,511
so it becomes C, colon, double backslash,
Users, double backslash,

49
00:02:40,871 --> 00:02:44,571
ursula, before it ever touches a tool
execution payload.

50
00:02:44,632 --> 00:02:48,431
So if you are on Windows, you need to run
claude update right now to get onto

51
00:02:48,511 --> 00:02:55,431
version 2.1.218 or the even newer version
2.1.220 stability

52
00:02:55,511 --> 00:02:55,851
release.

53
00:02:56,156 --> 00:03:00,256
Right, because otherwise the agent
basically cannot touch any files in your user

54
00:03:00,357 --> 00:03:00,936
directory.

55
00:03:01,417 --> 00:03:04,657
But you know, it feels like Windows always
gets the short end of the stick with

56
00:03:04,696 --> 00:03:06,196
these CLI developer tools.

57
00:03:06,616 --> 00:03:09,236
Have they been fixing other Windows
specific stuff lately?

58
00:03:09,292 --> 00:03:12,972
Oh, absolutely, they have been doing some
serious hardening.

59
00:03:13,004 --> 00:03:19,052
Just in version 2.1.219, they fixed a
nasty crash where if your CLAUDE CODE GIT BASH

60
00:03:19,132 --> 00:03:24,172
PATH environment variable pointed to an
invalid binary, the whole CLI would just

61
00:03:24,272 --> 00:03:24,732
die.

62
00:03:24,892 --> 00:03:29,932
Now, it gracefully falls back to a safe
default path and just gives you a polite

63
00:03:29,992 --> 00:03:30,492
warning.

64
00:03:30,672 --> 00:03:36,652
And if we look slightly further back to
version 2.1.214, they patched a security

65
00:03:36,709 --> 00:03:41,212
vulnerability that was bypassing
permission checks in PowerShell 5.1.

66
00:03:41,425 --> 00:03:45,132
So they are definitely putting in the work
to make Windows a first class citizen

67
00:03:45,180 --> 00:03:45,612
here.

68
00:03:45,824 --> 00:03:47,744
That is actually super reassuring.

69
00:03:48,284 --> 00:03:52,085
So, simple moral of the story: if you are
developer on Windows,

70
00:03:52,545 --> 00:03:56,885
especially if your name starts with a U,
go run claude update and save yourself some

71
00:03:56,925 --> 00:03:57,744
massive headaches.

72
00:03:58,571 --> 00:03:59,351
Too right, mate.

73
00:03:59,871 --> 00:04:00,772
Save Ursula!

74
00:04:01,391 --> 00:04:03,611
Anyway, that is all for this quick update.

75
00:04:04,071 --> 00:04:04,631
Catch you later.

76
00:04:04,833 --> 00:04:05,313
See ya.

