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

2
00:00:01,149 --> 00:00:05,925
Lachlan Reed here, joined by James Turner,
and thanks to Jellypod for helping make

3
00:00:05,973 --> 00:00:08,807
this daily show a reality.

4
00:00:08,847 --> 00:00:14,647
Now, James, if you've ever spent your
evening babying an automated CLI tool only for

5
00:00:14,674 --> 00:00:18,727
it to fail right at the finish line
because of a silly syntax error,

6
00:00:18,827 --> 00:00:20,248
you're going to love this.

7
00:00:20,448 --> 00:00:27,296
The latest Claude Code update--we are
talking version 2.1.163--just

8
00:00:27,346 --> 00:00:30,016
dropped a massive workflow lifesaver.

9
00:00:31,000 --> 00:00:32,520
Oh, I know exactly what you mean.

10
00:00:33,190 --> 00:00:38,117
There is nothing worse than waiting for an
agent to finish a complex multi-file

11
00:00:38,181 --> 00:00:43,239
edit, only for it to exit, run your
linter, find one missing comma,

12
00:00:43,299 --> 00:00:45,001
and just throw its hands up.

13
00:00:45,161 --> 00:00:51,563
You're saying version 2.1.163 actually
lets Claude fix its own homework before it

14
00:00:51,643 --> 00:00:52,203
exits?

15
00:00:53,000 --> 00:00:53,801
Spot on!

16
00:00:54,428 --> 00:00:59,161
It's all down to a clever upgrade to the
lifecycle hooks, specifically the `Stop`

17
00:00:59,261 --> 00:01:01,721
and `SubagentStop` phases.

18
00:01:01,823 --> 00:01:07,163
Previously, if your post-execution hooks
failed--say, a test runner spat out an

19
00:01:07,216 --> 00:01:10,767
error--the agent would just halt and throw
an error.

20
00:01:11,027 --> 00:01:15,969
Now, developers can return a property
called `additionalContext` inside

21
00:01:16,049 --> 00:01:17,571
`hookSpecificOutput`.

22
00:01:17,838 --> 00:01:22,371
It feeds those validation failures right
back into Claude's context window.

23
00:01:23,000 --> 00:01:27,323
Wait, so instead of the hook failing the
entire run, the hook basically tells

24
00:01:27,369 --> 00:01:31,478
Claude, "Hey, look at this compiler error
I just found, go fix it and try stopping

25
00:01:31,531 --> 00:01:31,876
again"?

26
00:01:31,988 --> 00:01:34,197
That's a built-in self-correction loop!

27
00:01:34,437 --> 00:01:36,112
[genuinely surprised] What does that look
like structurally?

28
00:01:36,272 --> 00:01:38,429
Is it just a standard JSON payload?

29
00:01:39,000 --> 00:01:39,880
Exactly.

30
00:01:39,933 --> 00:01:43,077
Under the hood, your hook returns a JSON
schema.

31
00:01:43,157 --> 00:01:48,203
You pass an object with `status:
"failure"`, and then inside `hookSpecificOutput`,

32
00:01:48,243 --> 00:01:50,924
you define `additionalContext` as a
string.

33
00:01:51,004 --> 00:01:56,446
For example, you can dump the exact CLI
output of your failed Vitest or ESLint run

34
00:01:56,553 --> 00:01:57,967
right into that string.

35
00:01:58,070 --> 00:02:03,089
Claude parses that, realizes the job isn't
actually done, and spins up an extra

36
00:02:03,129 --> 00:02:04,928
reasoning turn to patch the code.

37
00:02:05,202 --> 00:02:07,205
That is incredibly elegant.

38
00:02:07,325 --> 00:02:12,680
It turns validation from a binary
pass-fail gate into an active feedback channel.

39
00:02:12,960 --> 00:02:16,598
I can write a hook that runs my TypeScript
compiler on `Stop`,

40
00:02:16,618 --> 00:02:21,630
and if `tsc` barks, Claude gets the
compiler output directly and resolves the type

41
00:02:21,683 --> 00:02:22,987
mismatch on the fly.

42
00:02:23,227 --> 00:02:24,985
No human intervention needed.

43
00:02:25,000 --> 00:02:25,917
Exactly!

44
00:02:26,010 --> 00:02:30,115
It's like having a junior dev who actually
listens to the linter before pushing to

45
00:02:30,211 --> 00:02:30,675
main.

46
00:02:31,513 --> 00:02:36,352
And look, they also snuck in a couple of
great quality-of-life wins in this release.

47
00:02:36,512 --> 00:02:43,387
We've got new filters for `/plugin list`
using `--enabled` and `--disabled` flags,

48
00:02:43,427 --> 00:02:45,947
which is handy when your plugin stack gets
messy.

49
00:02:46,000 --> 00:02:47,518
Oh, thank goodness.

50
00:02:47,554 --> 00:02:50,003
Managing third-party extensions was
getting a bit cluttered.

51
00:02:50,549 --> 00:02:53,128
And didn't they also tweak the `/btw`
shortcut?

52
00:02:54,000 --> 00:02:54,640
Yeah, they did!

53
00:02:54,933 --> 00:03:00,635
If you use `/btw` to capture context, you
can now press 'c' as a quick shortcut to

54
00:03:00,699 --> 00:03:03,672
instantly copy the output directly to your
clipboard.

55
00:03:03,832 --> 00:03:08,152
It's a tiny change, but when you're
jumping between terminal windows all day,

56
00:03:08,192 --> 00:03:10,391
those saved keystrokes really add up.

57
00:03:11,000 --> 00:03:12,838
It really keeps you in flow state.

58
00:03:13,287 --> 00:03:17,639
This whole release feels like Anthropic is
focusing hard on making Claude Code feel

59
00:03:17,687 --> 00:03:23,075
less like a novelty sandbox and more like
a rugged, production-ready toolchain that

60
00:03:23,115 --> 00:03:25,468
plays nice with local development
environments.

61
00:03:26,000 --> 00:03:26,800
Absolutely.

62
00:03:26,960 --> 00:03:31,129
It makes you wonder--as these local agents
get better at correcting their own

63
00:03:31,191 --> 00:03:36,002
mistakes through native hooks, how long
until we stop writing manual test runners

64
00:03:36,142 --> 00:03:38,798
and just let the environment heal itself?

65
00:03:39,000 --> 00:03:40,836
That is the ultimate goal, isn't it?

66
00:03:41,682 --> 00:03:42,836
Thanks for listening, everyone.

67
00:03:42,916 --> 00:03:44,037
We'll catch you in the next one.

68
00:03:45,000 --> 00:03:45,559
See ya!

