1
00:00:00,000 --> 00:00:02,880
So I was- I was messing around in the
terminal late last night,

2
00:00:02,907 --> 00:00:03,120
right?

3
00:00:03,143 --> 00:00:08,080
Trying to hook up this new Claude Code CLI
to a headless server I've got running on

4
00:00:08,120 --> 00:00:11,680
a- on a dusty old Raspberry Pi in my
backyard shed.

5
00:00:11,740 --> 00:00:14,320
And usually, when you do any of this
MCP...

6
00:00:14,340 --> 00:00:16,320
you know, Model Context Protocol...

7
00:00:16,368 --> 00:00:20,720
auth stuff, it- it tries to pop open a
local browser window to do the OAuth

8
00:00:20,776 --> 00:00:21,520
handshake.

9
00:00:21,660 --> 00:00:23,120
But on a headless server?

10
00:00:23,232 --> 00:00:25,367
Yeah, absolute brick wall.

11
00:00:25,500 --> 00:00:28,247
No browser, no display, nothing.

12
00:00:28,532 --> 00:00:29,092
Oh, yeah.

13
00:00:29,112 --> 00:00:30,612
The classic headless headache.

14
00:00:30,652 --> 00:00:31,572
I- I've been there.

15
00:00:31,692 --> 00:00:36,692
You run the login command, it hangs, and
then it just spits out some blank terminal

16
00:00:36,738 --> 00:00:40,212
screen because there's literally no Chrome
or Safari to launch.

17
00:00:40,352 --> 00:00:44,532
Did you have to do some weird SSH port
forwarding tunnel thing to get around it?

18
00:00:44,825 --> 00:00:45,545
Exactly!

19
00:00:45,678 --> 00:00:50,985
Normally you're- you're hacking together
an SSH tunnel, routing port 8080 back to

20
00:00:51,017 --> 00:00:54,185
your local machine, and praying the token
doesn't expire.

21
00:00:54,385 --> 00:01:00,425
But they actually added this new flow--
it's `claude mcp login --no-browser`.

22
00:01:00,638 --> 00:01:02,185
It is a lifesaver.

23
00:01:02,295 --> 00:01:07,625
Instead of forcing a browser open, it- it
just dumps a raw verification URL and a

24
00:01:07,692 --> 00:01:10,745
short, eight-character code right there in
your terminal.

25
00:01:10,925 --> 00:01:14,985
You just copy the link, open it on your
phone or your laptop,

26
00:01:15,025 --> 00:01:19,545
punch in the code, and bam, the headless
terminal session gets authenticated

27
00:01:19,609 --> 00:01:20,345
instantly.

28
00:01:21,018 --> 00:01:22,578
Oh, that is huge!

29
00:01:22,765 --> 00:01:26,178
So no more local proxying just to get a
basic OAuth token.

30
00:01:26,274 --> 00:01:30,978
That means you can spin up Claude Code on-
on remote AWS EC2 instances,

31
00:01:31,005 --> 00:01:34,378
or even inside Docker containers, without
having to fight the network bridge.

32
00:01:34,391 --> 00:01:37,378
It just- it just works over standard CLI
stdout.

33
00:01:37,658 --> 00:01:37,978
Right!

34
00:01:38,005 --> 00:01:40,858
It- it completely unlocks the remote
workflows.

35
00:01:41,018 --> 00:01:46,458
But, okay, once you're in, that's where
things get really wild...

36
00:01:46,538 --> 00:01:50,058
and, to be honest, a little bit scary if
you aren't careful.

37
00:01:50,218 --> 00:01:55,418
Claude Code has this feature where it can
generate and- and automatically execute

38
00:01:55,482 --> 00:01:58,058
bash commands directly in your terminal.

39
00:01:58,186 --> 00:02:03,578
Like, if you ask it to find a file or- or
check a port, it writes the script and

40
00:02:03,642 --> 00:02:04,218
runs it.

41
00:02:04,805 --> 00:02:05,573
Whoa, hold on.

42
00:02:05,661 --> 00:02:07,653
Automatic bash execution?

43
00:02:07,765 --> 00:02:12,293
That- that sounds like a recipe for a
casual `rm -rf /` by accident.

44
00:02:12,405 --> 00:02:15,733
Like, if the LLM hallucinating a path,
or...

45
00:02:15,773 --> 00:02:17,573
I don't know, misunderstands a wildcard?

46
00:02:17,693 --> 00:02:21,973
How do you- how do you keep it from
accidentally nuking your entire file system?

47
00:02:22,283 --> 00:02:27,003
Mate, trust me, my heart stopped the first
time it tried to run a `find` command

48
00:02:27,035 --> 00:02:29,143
with a bunch of nested piping [chuckles].

49
00:02:29,148 --> 00:02:31,963
But they built in these- these really
solid security gates.

50
00:02:32,123 --> 00:02:34,523
By default, it's not just a blank check.

51
00:02:34,643 --> 00:02:40,443
Every single destructive or write-heavy
command requires a manual y-slash-n

52
00:02:40,498 --> 00:02:41,643
confirmation from you.

53
00:02:41,763 --> 00:02:46,363
And you can actually configure the
security threshold in the `.claudecode` config

54
00:02:46,427 --> 00:02:46,843
file.

55
00:02:46,983 --> 00:02:51,963
You can set it to "execute-with-approval"
for everything, or you can whitelist very

56
00:02:52,025 --> 00:02:57,803
specific, safe read-only commands like
`git status` or `cat` so it doesn't nag you

57
00:02:57,843 --> 00:03:03,403
every single second, while keeping things
like `rm` or `npm install` locked behind a

58
00:03:03,460 --> 00:03:04,363
strict prompt.

59
00:03:04,658 --> 00:03:05,378
Ah, okay.

60
00:03:05,410 --> 00:03:06,098
That makes sense.

61
00:03:06,258 --> 00:03:08,738
So you basically build a sandbox policy.

62
00:03:08,858 --> 00:03:10,498
But what about the UI itself?

63
00:03:10,685 --> 00:03:14,258
If it's running all these terminal
commands and waiting for user approvals,

64
00:03:14,278 --> 00:03:16,978
the standard terminal screen must get
super cluttered, right?

65
00:03:17,074 --> 00:03:21,618
Just- just lines and lines of raw shell
output drowning out the actual chat history.

66
00:03:21,908 --> 00:03:22,708
Ah!

67
00:03:22,788 --> 00:03:26,868
That is where the iTerm2 integration comes
in, and honestly,

68
00:03:26,895 --> 00:03:27,668
it's brilliant.

69
00:03:27,935 --> 00:03:33,428
If you're on Mac using iTerm2, Claude Code
can leverage what they call "Teammate

70
00:03:33,492 --> 00:03:33,988
Mode."

71
00:03:34,088 --> 00:03:37,988
Instead of dumping everything into one
messy scrollback buffer,

72
00:03:38,041 --> 00:03:41,108
it dynamically talks to the iTerm2 API.

73
00:03:41,241 --> 00:03:44,628
It can actually split your terminal pane
automatically-- like,

74
00:03:44,655 --> 00:03:48,948
it'll open a dedicated sidebar pane on the
right side of your window just to run the

75
00:03:48,999 --> 00:03:53,668
background build commands or watch logs,
while your main chat stays perfectly clean

76
00:03:53,695 --> 00:03:54,308
on the left.

77
00:03:54,617 --> 00:03:55,497
Wait, seriously?

78
00:03:55,577 --> 00:03:58,057
It- it controls the actual terminal
layout?

79
00:03:58,137 --> 00:04:01,337
Like, spawning and resizing iTerm splits
programmatically?

80
00:04:01,617 --> 00:04:02,497
Yeah, absolutely!

81
00:04:02,524 --> 00:04:04,737
It- it just manages the layout on the fly.

82
00:04:04,917 --> 00:04:06,257
And it gets cooler.

83
00:04:06,444 --> 00:04:12,897
It uses the iTerm2 status bar API to push
custom status badges into the corner of

84
00:04:12,913 --> 00:04:13,537
your window.

85
00:04:13,804 --> 00:04:18,577
So while it's running a long test suite
or- or deploying a build in the background,

86
00:04:18,617 --> 00:04:23,457
you'll see a little dynamic progress badge
right there in the iTerm frame showing

87
00:04:23,477 --> 00:04:30,257
you the exact state-- like "Claude:
running tests (12/45 passed)"-- even if you've

88
00:04:30,293 --> 00:04:32,177
switched tabs to look at your database.

89
00:04:32,620 --> 00:04:34,252
That's actually incredibly clever.

90
00:04:34,519 --> 00:04:39,772
It- it turns the terminal emulator itself
into a structured IDE interface,

91
00:04:39,818 --> 00:04:43,932
rather than just forcing everything
through standard stdin and stdout.

92
00:04:44,065 --> 00:04:47,772
It's like the AI has its own dedicated
monitor on your desk.

93
00:04:48,075 --> 00:04:48,955
Exactly, mate.

94
00:04:49,008 --> 00:04:54,635
It stops feeling like a- a clunky chat
window and feels more like you've actually

95
00:04:54,675 --> 00:04:58,795
got a junior dev sitting next to you,
typing away on their own split-screen.

96
00:04:58,982 --> 00:05:00,075
It's wild.

97
00:05:00,212 --> 00:05:04,475
Anyway, I think that's my cue to go play
with some more config files.

98
00:05:04,568 --> 00:05:05,995
Catch you later, James!

99
00:05:06,283 --> 00:05:07,243
Sounds good, Lachlan.

100
00:05:07,275 --> 00:05:07,883
Talk soon!

