1
00:00:00,120 --> 00:00:04,000
So I- I- I was looking at the new Browser
Use update this morning,

2
00:00:04,040 --> 00:00:06,460
and the change is actually kind of wild.

3
00:00:06,520 --> 00:00:09,990
It's- it's not just clicking buttons and
taking screenshots anymore.

4
00:00:10,671 --> 00:00:15,070
They've integrated direct, low-level
Chrome DevTools Protocol access.

5
00:00:15,680 --> 00:00:20,900
Like, full CDP, directly through the
@Browser or @Chrome decorators.

6
00:00:21,570 --> 00:00:25,020
Thanks to Jellypod for helping make this
daily show a reality.

7
00:00:25,760 --> 00:00:29,860
But yeah, this means instead of just
guessing why an automation failed by looking at

8
00:00:29,900 --> 00:00:34,260
a PNG, you can programmatically grab the
actual runtime state.

9
00:00:34,940 --> 00:00:39,710
We're talking performance profiles,
network traffic, console errors,

10
00:00:40,200 --> 00:00:43,500
even local storage values, right there in
the execution loop.

11
00:00:44,114 --> 00:00:49,424
Wait, so it's not just using the
high-level Selenium-style commands anymore?

12
00:00:49,434 --> 00:00:52,674
It's actually talking to the DevTools
WebSocket directly?

13
00:00:53,533 --> 00:00:54,093
Exactly.

14
00:00:54,593 --> 00:00:56,912
It's hooking straight into the debugging
port.

15
00:00:57,493 --> 00:01:01,793
So if your agent is trying to scrape a
page and it hits a silent JavaScript error,

16
00:01:02,293 --> 00:01:03,253
you don't have to guess.

17
00:01:03,713 --> 00:01:07,493
You can just query the console logs
directly through the CDP connection.

18
00:01:08,233 --> 00:01:12,093
But- but here is the thing, you actually
have to turn it on first.

19
00:01:12,603 --> 00:01:15,003
By default, it's- it's sandboxed.

20
00:01:15,613 --> 00:01:21,173
You have to go into the Browser settings
UI and manually toggle "Enable full CDP

21
00:01:21,333 --> 00:01:21,763
access."

22
00:01:22,393 --> 00:01:27,493
Or, if you're managing this across a team,
you can enforce it in the config.

23
00:01:28,021 --> 00:01:30,380
Oh, like an admin lock.

24
00:01:30,501 --> 00:01:32,361
How do they handle that in the codebase?

25
00:01:32,541 --> 00:01:34,851
Is it in a YAML file or...

26
00:01:35,656 --> 00:01:37,396
It's in requirements.toml.

27
00:01:38,116 --> 00:01:44,926
You set browser_use_full_cdp_access =
false if you want to lock it down and

28
00:01:44,996 --> 00:01:49,956
prevent developers from spinning up agents
that can sniff local network sockets or

29
00:01:50,056 --> 00:01:51,456
read arbitrary storage.

30
00:01:52,136 --> 00:01:56,816
Which, let's be honest, is a massive
security surface area if you're running

31
00:01:56,896 --> 00:01:58,296
untrusted agent code.

32
00:01:59,178 --> 00:02:04,438
Right, because if an agent gets hijacked,
and it has full CDP access,

33
00:02:04,977 --> 00:02:09,718
it could theoretically inject scripts,
steal session cookies from other tabs,

34
00:02:10,098 --> 00:02:13,297
or even intercept raw network requests.

35
00:02:13,358 --> 00:02:14,158
That's...

36
00:02:14,218 --> 00:02:19,078
yeah, that's a lot of power for a visual
assistant to suddenly have.

37
00:02:19,177 --> 00:02:20,417
Exactly.

38
00:02:20,457 --> 00:02:24,197
Which is why the security boundaries they
put around this are actually pretty

39
00:02:24,207 --> 00:02:24,557
strict.

40
00:02:25,207 --> 00:02:27,067
They didn't just open the floodgates.

41
00:02:27,888 --> 00:02:32,468
Yeah, because if I'm running this on my
local machine, I don't want an agent digging

42
00:02:32,478 --> 00:02:36,328
through my active banking session just
because it's running in the same browser

43
00:02:36,348 --> 00:02:37,528
context.

44
00:02:37,588 --> 00:02:40,048
What are they doing to keep this scoped?

45
00:02:40,095 --> 00:02:45,215
Well, first off, every single CDP
interaction has to go through an explicit

46
00:02:45,455 --> 00:02:47,875
human-in-the-loop approval step in the UI.

47
00:02:48,495 --> 00:02:53,015
The agent can't just silently trigger a
network trace in the background; you get a

48
00:02:53,035 --> 00:02:53,415
prompt.

49
00:02:54,025 --> 00:02:58,895
And more importantly, they've restricted
the entire CDP feature set to

50
00:02:59,015 --> 00:03:01,055
unauthenticated routes only.

51
00:03:01,615 --> 00:03:06,695
If the browser detects it's transitioned
into a logged-in state or a secure origin,

52
00:03:07,135 --> 00:03:11,095
the CDP capabilities get throttled to
prevent credential exposure.

53
00:03:11,775 --> 00:03:16,475
Okay, that actually makes me feel a lot
better about running this locally.

54
00:03:16,515 --> 00:03:21,785
It's like having a tight sandbox but with
an escape hatch only when you explicitly

55
00:03:21,795 --> 00:03:22,445
sign off on it.

56
00:03:23,332 --> 00:03:24,873
Yeah, it's a smart compromise.

57
00:03:25,453 --> 00:03:29,353
Now, speaking of workflows, they also
slipped in a couple of really nice

58
00:03:29,473 --> 00:03:30,733
quality-of-life updates.

59
00:03:31,433 --> 00:03:34,933
The App Composer now has the /init command
built-in.

60
00:03:35,653 --> 00:03:39,373
Previously, you had to jump out of the
composer, drop to your terminal,

61
00:03:39,892 --> 00:03:43,353
run the CLI init script to bootstrap your
project structure,

62
00:03:43,853 --> 00:03:44,672
and then go back.

63
00:03:45,413 --> 00:03:50,373
Now it's just a single slash command right
inside the composer UI to get your

64
00:03:50,392 --> 00:03:51,373
boilerplate set up.

65
00:03:52,807 --> 00:03:53,727
Thank goodness.

66
00:03:54,267 --> 00:03:58,957
Jumping between the browser UI and the
terminal just to scaffold a project was such

67
00:03:59,127 --> 00:04:00,547
a friction point.

68
00:04:00,687 --> 00:04:02,167
What about the API side?

69
00:04:02,207 --> 00:04:04,267
Any changes to how they're handling rate
limits?

70
00:04:05,152 --> 00:04:06,212
Actually, yeah.

71
00:04:06,572 --> 00:04:10,412
They're introducing what they call a
"rate-limit reset banking program."

72
00:04:11,052 --> 00:04:14,812
Instead of your unused requests just
vanishing at the end of the minute or hour,

73
00:04:15,432 --> 00:04:19,792
a portion of your unused quota actually
rolls over into a temporary bank.

74
00:04:20,572 --> 00:04:23,712
So if your agent is idle for twenty
minutes while you're writing code,

75
00:04:24,252 --> 00:04:29,032
and then you trigger a massive parallel
test run, you can draw from that accumulated

76
00:04:29,072 --> 00:04:31,732
bank to avoid getting immediately
rate-limited.

77
00:04:32,823 --> 00:04:34,933
Oh, that is huge for development cycles.

78
00:04:35,293 --> 00:04:37,793
You're not penalized for taking time to
think.

79
00:04:38,513 --> 00:04:40,873
Alright, I'm going to go play with this
/init command.

80
00:04:41,193 --> 00:04:41,753
Talk to you later.

81
00:04:42,482 --> 00:04:42,992
Catch you later.

