1
00:00:00,000 --> 00:00:00,800
G'day everyone!

2
00:00:01,156 --> 00:00:02,086
Welcome to the show.

3
00:00:02,286 --> 00:00:06,007
I'm Lachlan Reed, and as always, I'm
joined by James Turner.

4
00:00:06,114 --> 00:00:10,327
Today we are diving straight into some
serious terminal wizardry,

5
00:00:10,367 --> 00:00:15,767
but first, a massive shoutout to Jellypod
for making this daily show a reality.

6
00:00:15,947 --> 00:00:22,247
Now, James, I was poking around the
v2.1.169 release of Claude Code,

7
00:00:22,267 --> 00:00:26,487
and they have quietly handed us the keys
to complete headless automation.

8
00:00:27,000 --> 00:00:29,320
Oh, the updates to `claude agents` are
massive!

9
00:00:30,029 --> 00:00:34,120
Especially if you've ever tried to script
Claude in a CI/CD pipeline or a background

10
00:00:34,200 --> 00:00:35,360
cron job.

11
00:00:35,423 --> 00:00:39,880
Before this release, running Claude as a
background agent was a bit of a black box.

12
00:00:39,920 --> 00:00:44,840
But now, they've upgraded `claude agents
--json` with two crucial additions: the

13
00:00:44,880 --> 00:00:47,800
`--all` flag and the `waitingFor` field.

14
00:00:48,000 --> 00:00:50,960
That `waitingFor` field is the real gold
nugget here.

15
00:00:51,800 --> 00:00:55,120
See, previously, if your background agent
hit a point where it needed user

16
00:00:55,164 --> 00:00:59,760
permission-like, say, running a sketchy
terminal command or writing to a protected

17
00:00:59,808 --> 00:01:02,600
directory-the script would just hang.

18
00:01:02,710 --> 00:01:05,840
You'd be staring at a blank terminal like
a stunned mullet.

19
00:01:06,100 --> 00:01:10,480
Now, the JSON output explicitly tells your
orchestrator script,

20
00:01:10,600 --> 00:01:13,840
"Hey, I'm blocked because I'm waiting on a
permission prompt."

21
00:01:14,000 --> 00:01:17,680
Right, it literally exposes the state
machine of the agent.

22
00:01:17,840 --> 00:01:24,480
So, if you run `claude agents --json
--all`, you get a structured list of every

23
00:01:24,549 --> 00:01:25,920
active background agent.

24
00:01:26,107 --> 00:01:31,120
If one of them is stuck, the `waitingFor`
key in that JSON payload will populate

25
00:01:31,152 --> 00:01:33,840
with something like `USER_APPROVAL`.

26
00:01:33,872 --> 00:01:37,920
Your wrapper script can parse that and
trigger an alert, or even programmatically

27
00:01:37,970 --> 00:01:40,080
approve it if you've built an auto-decide
layer.

28
00:01:41,000 --> 00:01:41,960
Exactly!

29
00:01:42,665 --> 00:01:45,240
You'd just pipe that output straight into
`jq`.

30
00:01:45,370 --> 00:01:52,040
Imagine a bash loop running every five
seconds, doing `claude agents --json

31
00:01:52,413 --> 00:01:59,400
--all | jq '.[] | select(.status ==
"paused"

32
00:01:59,620 --> 00:02:05,507
and .waitingFor == "USER_APPROVAL")'`.

33
00:02:05,524 --> 00:02:10,680
If that returns a hit, you can fire off a
Slack webhook or a PagerDuty alert.

34
00:02:10,947 --> 00:02:17,080
It turns Claude from an interactive CLI
tool into a fully queryable system daemon.

35
00:02:18,000 --> 00:02:20,720
Which brings us to the security elephant
in the room.

36
00:02:21,502 --> 00:02:24,640
If you're running these agents headlessly
or letting them loose on a server,

37
00:02:24,800 --> 00:02:27,200
you do not want them running wild.

38
00:02:27,344 --> 00:02:31,600
That's why the introduction of the
`CLAUDE_CODE_DISABLE_BUNDLED_SKILLS` environment

39
00:02:31,644 --> 00:02:36,880
variable-or the `disableBundledSkills`
config setting-is a massive win for

40
00:02:36,931 --> 00:02:38,240
enterprise sandboxing.

41
00:02:39,000 --> 00:02:39,840
Spot on.

42
00:02:39,933 --> 00:02:43,080
It's all about restricting the blast
radius.

43
00:02:43,112 --> 00:02:48,280
When you set
`CLAUDE_CODE_DISABLE_BUNDLED_SKILLS=true`, you are essentially

44
00:02:48,344 --> 00:02:53,280
stripping Claude of its default slash
commands and built-in workflows.

45
00:02:53,400 --> 00:02:59,320
No more `/search`, no more automatic git
commits, and no more executing bundled bash

46
00:02:59,380 --> 00:03:01,800
scripts that you haven't explicitly
whitelisted.

47
00:03:02,000 --> 00:03:04,080
It's the ultimate lock-down mode.

48
00:03:04,547 --> 00:03:09,040
If you disable those bundled skills,
Claude is forced to rely solely on the explicit

49
00:03:09,107 --> 00:03:14,160
tools you expose to it via your own custom
API schemas or runtime environments.

50
00:03:14,320 --> 00:03:18,480
It prevents the model from trying to be
clever and using a default workflow that

51
00:03:18,507 --> 00:03:21,040
might bypass your custom security proxies.

52
00:03:22,000 --> 00:03:24,960
Yeah, but there is a massive caveat here,
mate.

53
00:03:26,054 --> 00:03:30,721
If you strip all those default
capabilities, you're also stripping its legs.

54
00:03:30,988 --> 00:03:35,761
If your automation scripts rely on Claude
using its standard filesystem search or

55
00:03:35,841 --> 00:03:41,681
file editing skills to refactor code,
those will fail silently or throw errors

56
00:03:41,761 --> 00:03:45,681
because the model suddenly doesn't know
how to call those slash commands anymore.

57
00:03:45,861 --> 00:03:50,401
You've gotta be prepared to build your own
custom tool definitions to replace what

58
00:03:50,441 --> 00:03:51,201
you took away.

59
00:03:52,000 --> 00:03:56,640
Exactly, you have to find that sweet spot
between absolute security and actual

60
00:03:56,710 --> 00:03:57,201
utility.

61
00:03:57,827 --> 00:04:02,000
If you're going to sandbox it, you need to
be highly intentional about the specific

62
00:04:02,057 --> 00:04:03,600
subset of tools you expose.

63
00:04:03,787 --> 00:04:08,480
It's a classic trade-off: headless
automation gives you incredible leverage,

64
00:04:08,520 --> 00:04:11,200
but only if you design the guardrails
properly.

65
00:04:12,000 --> 00:04:12,880
Well said, James.

66
00:04:13,067 --> 00:04:16,880
It's a whole new paradigm for local agent
execution.

67
00:04:17,040 --> 00:04:22,080
Let us know if you've started running
Claude Code in your deployment pipelines yet.

68
00:04:22,256 --> 00:04:24,960
That's all for today's quick tech
teardown.

69
00:04:25,067 --> 00:04:26,239
Catch you all tomorrow!

70
00:04:27,000 --> 00:04:27,400
See ya!

