1
00:00:00,000 --> 00:00:05,200
Here's a small thing that quietly wrecks
long sessions: Claude Code just stops

2
00:00:05,248 --> 00:00:08,320
searching the web, halfway through a big
research job.

3
00:00:08,480 --> 00:00:13,120
This is the Claude Code Changelog, brought
to you by Jellypod AI.

4
00:00:13,320 --> 00:00:14,160
I'm Lachlan.

5
00:00:14,500 --> 00:00:15,220
And I'm James.

6
00:00:15,300 --> 00:00:22,180
Today it's versions 2.1.290 and 2.1.291,
released October 5th

7
00:00:22,220 --> 00:00:22,980
and 6th.

8
00:00:23,100 --> 00:00:29,060
Two changes: WebSearch now refills over
time, and WebFetch no longer silently chops

9
00:00:29,120 --> 00:00:30,180
off long pages.

10
00:00:30,208 --> 00:00:31,248
WebSearch first.

11
00:00:31,397 --> 00:00:37,408
Before 2.1.290, an interactive session got
a fixed budget of 200 searches.

12
00:00:37,588 --> 00:00:43,248
The changelog says the session ended after
200 calls, and you could adjust that cap

13
00:00:43,296 --> 00:00:48,448
with
CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION, which came in around 2.1.212.

14
00:00:48,588 --> 00:00:54,288
Now the budget refills at 100 calls per
hour, and a new variable sets that rate:

15
00:00:54,341 --> 00:00:56,528
CLAUDE_CODE_WEB_SEARCH_REFILLS_PER_HOUR.

16
00:00:56,542 --> 00:00:59,982
The practical effect is for long lived
sessions.

17
00:01:00,082 --> 00:01:04,062
Say you've got a session doing deep
research on a migration,

18
00:01:04,169 --> 00:01:06,622
or a /loop polling for something all day.

19
00:01:06,942 --> 00:01:10,062
Hitting the wall used to mean exiting and
resuming.

20
00:01:10,242 --> 00:01:12,702
Now it just waits for the budget to come
back.

21
00:01:12,802 --> 00:01:14,782
You don't have to do anything for the
default.

22
00:01:14,942 --> 00:01:21,502
If you want faster, export
CLAUDE_CODE_WEB_SEARCH_REFILLS_PER_HOUR equals 200.

23
00:01:21,609 --> 00:01:23,849
If you want a hard lid, set it to 0.

24
00:01:23,902 --> 00:01:26,078
The changelog says 0 turns it off.

25
00:01:26,126 --> 00:01:30,652
SessionWatcher reads that as turning
refilling off, and Classmethod points out the

26
00:01:30,682 --> 00:01:34,526
changelog doesn't say whether it's the
refilling or the quota itself.

27
00:01:34,590 --> 00:01:35,742
So test it before you rely on it in CI.

28
00:01:35,750 --> 00:01:36,790
And a caveat there.

29
00:01:36,910 --> 00:01:41,190
The announcement doesn't state a maximum
the budget can build up to,

30
00:01:41,210 --> 00:01:43,270
and it doesn't split rates by plan.

31
00:01:43,483 --> 00:01:47,830
So if an agent burns a hundred searches in
a burst, I'd expect to wait for the

32
00:01:47,887 --> 00:01:52,470
hourly refill to catch up, but that's my
read, not something the release notes spell

33
00:01:52,550 --> 00:01:52,870
out.

34
00:01:53,046 --> 00:01:56,470
Also, this is a tool budget for
interactive sessions.

35
00:01:56,603 --> 00:01:58,710
It's not your subscription message limit.

36
00:01:58,750 --> 00:02:00,990
Now WebFetch, which I think is the bigger
deal.

37
00:02:01,063 --> 00:02:05,390
Previously it silently dropped page text
past 100,000 characters.

38
00:02:05,550 --> 00:02:07,070
Silently is the problem.

39
00:02:07,203 --> 00:02:12,190
If the method you asked about lived at
character 105,000 of an API reference,

40
00:02:12,236 --> 00:02:16,590
Claude had no signal anything was missing,
so it could say the method doesn't exist.

41
00:02:16,750 --> 00:02:23,390
In 2.1.290 it tells Claude how much was
unread, and it takes an offset parameter to

42
00:02:23,443 --> 00:02:24,430
continue from there.

43
00:02:24,458 --> 00:02:30,778
So with a huge OpenAPI spec or a long RFC,
you can just say: fetch the next section

44
00:02:30,805 --> 00:02:33,098
of this spec using the offset parameter.

45
00:02:33,258 --> 00:02:37,178
Claude already knows how much is left, so
it can page through.

46
00:02:37,378 --> 00:02:42,458
One watch out: every chunk is up to a
hundred thousand characters going into your

47
00:02:42,548 --> 00:02:43,338
context.

48
00:02:43,482 --> 00:02:48,298
That will probably bring compaction on
sooner, so ask for the next offset only when

49
00:02:48,318 --> 00:02:49,018
you need it.

50
00:02:49,042 --> 00:02:54,562
Important one: update straight to 2.1.291,
with claude update.

51
00:02:55,122 --> 00:03:00,722
2.1.290 had a regression where cloud
sessions could drop answers to permission

52
00:03:00,782 --> 00:03:01,282
prompts.

53
00:03:01,422 --> 00:03:08,402
And 2.1.291 also fixes a 2.1.288
regression where the last

54
00:03:08,455 --> 00:03:11,042
messages of a session could be lost when
you quit.

55
00:03:11,042 --> 00:03:12,242
A few smaller ones.

56
00:03:12,422 --> 00:03:18,482
claude attach and claude logs now accept
part of a session name instead of the full

57
00:03:18,642 --> 00:03:19,282
id.

58
00:03:19,410 --> 00:03:24,882
Scheduled tasks, like an interval /loop,
now survive compaction on conversations

59
00:03:24,982 --> 00:03:27,442
compacted from this version on.

60
00:03:27,458 --> 00:03:33,538
And on permissions: Bash checks now ask
approval for read only looking commands like

61
00:03:33,805 --> 00:03:38,898
rg or git grep when the arguments contain
wildcards the shell would expand.

62
00:03:39,111 --> 00:03:45,858
So rg TODO star dot txt prompts you, but
rg TODO

63
00:03:45,991 --> 00:03:48,658
notes.txt still passes.

64
00:03:48,951 --> 00:03:51,138
pyright also now needs approval.

65
00:03:51,264 --> 00:03:53,698
Expect a few more prompts after you
update.

66
00:03:53,708 --> 00:03:54,428
That's the update.

67
00:03:54,495 --> 00:03:57,708
Check your version, set the refill
variable if you need it,

68
00:03:57,728 --> 00:03:58,908
and we'll catch you next time.

