1
00:00:00,000 --> 00:00:02,160
Hey everyone, welcome to the show!

2
00:00:02,400 --> 00:00:07,760
I'm Ethan Park, here with Maya, and a
quick shoutout before we dive in: thanks to

3
00:00:07,840 --> 00:00:10,960
Jellypod for helping make this daily show
a reality.

4
00:00:11,133 --> 00:00:18,000
Today we are looking at the Codex CLI
0.139.0 release, and they've

5
00:00:18,058 --> 00:00:21,360
introduced a feature that solves a massive
headache for me.

6
00:00:22,352 --> 00:00:27,280
Code mode can now call a standalone web
search directly, even from deep inside

7
00:00:27,349 --> 00:00:29,120
nested JavaScript tool calls.

8
00:00:30,340 --> 00:00:33,079
Wait, nested JavaScript tool calls?

9
00:00:33,619 --> 00:00:38,800
So, if you're running a script inside the
CLI and it hits a wall with an external

10
00:00:38,880 --> 00:00:42,340
API, the script itself can trigger a
search query?

11
00:00:43,000 --> 00:00:44,040
Exactly.

12
00:00:44,093 --> 00:00:47,560
Think about when you're writing a script
to automate an integration,

13
00:00:47,620 --> 00:00:51,960
and suddenly you get a 404 because the API
endpoint changed yesterday.

14
00:00:52,858 --> 00:00:57,008
Instead of the LLM throwing its hands up
or forcing you to drop out of your tool

15
00:00:57,075 --> 00:01:01,808
chain, Codex can issue a direct web search
to grab the latest docs,

16
00:01:01,840 --> 00:01:04,368
pull the correct schema, and keep
executing.

17
00:01:05,379 --> 00:01:10,480
Okay, that's incredibly useful for things
like undocumented npm updates.

18
00:01:10,980 --> 00:01:13,260
But how is it handling the data payload?

19
00:01:13,720 --> 00:01:16,079
Web pages are notoriously noisy.

20
00:01:16,500 --> 00:01:21,779
If it's sucking down raw HTML or even
heavy markdown, you're going to blow through

21
00:01:21,819 --> 00:01:23,999
your token context window in seconds.

22
00:01:24,000 --> 00:01:25,200
They actually thought of that.

23
00:01:25,320 --> 00:01:29,040
The engine bypasses heavy markdown parsing
entirely.

24
00:01:29,253 --> 00:01:33,760
It streamlines the query and returns flat,
clean plaintext.

25
00:01:34,000 --> 00:01:40,080
No massive HTML tables, no complex nested
lists -- just the text.

26
00:01:40,548 --> 00:01:44,160
But the flip side is you have to write
incredibly precise queries.

27
00:01:44,427 --> 00:01:49,680
If you search for something generic like
"react error," you'll just get a wall of

28
00:01:49,760 --> 00:01:50,880
unhelpful text.

29
00:01:51,439 --> 00:01:56,759
Right, because you don't have visual cues
or layout structure to help filter the

30
00:01:56,819 --> 00:01:58,039
signal from the noise.

31
00:01:58,879 --> 00:02:02,079
It makes you realize how much we rely on
formatting.

32
00:02:02,920 --> 00:02:08,260
So, if I'm feeding this stack traces, I
need to make sure the CLI query targeting is

33
00:02:08,440 --> 00:02:13,479
super specific -- like targeting the exact
error code and package version.

34
00:02:14,000 --> 00:02:14,920
Precisely.

35
00:02:14,990 --> 00:02:20,240
You want to pass things like the exact npm
package version and the specific method

36
00:02:20,304 --> 00:02:20,920
name.

37
00:02:21,040 --> 00:02:25,200
If you do that, the plaintext return is
incredibly efficient.

38
00:02:25,253 --> 00:02:28,080
It's basically a surgical strike for
documentation.

39
00:02:29,401 --> 00:02:34,019
That efficiency focus seems to carry over
to how they're handling schemas in this

40
00:02:34,079 --> 00:02:34,759
release too.

41
00:02:35,399 --> 00:02:39,079
I saw they did some serious hardening on
the Model Context Protocol,

42
00:02:39,340 --> 00:02:41,000
or MCP, schemas.

43
00:02:41,579 --> 00:02:46,940
Apparently, large tool and connector
schemas now preserve `oneOf` and `allOf`

44
00:02:47,039 --> 00:02:48,399
structures during compaction.

45
00:02:49,000 --> 00:02:50,800
Oh, thank goodness.

46
00:02:51,982 --> 00:02:57,560
Previously, when Codex tried to compact
those massive JSON schemas to save tokens,

47
00:02:57,587 --> 00:03:02,560
it would occasionally flatten or strip out
`oneOf` and `allOf` blocks.

48
00:03:02,650 --> 00:03:07,720
And if you're relying on strict custom
validation for complex API payloads,

49
00:03:07,789 --> 00:03:12,120
losing those logical operators completely
breaks your runtime validation.

50
00:03:13,560 --> 00:03:14,620
It's the worst.

51
00:03:15,159 --> 00:03:19,099
You end up with a compacted schema that
says any input is fine,

52
00:03:19,579 --> 00:03:24,380
and then your backend crashes because a
required mutually exclusive field was

53
00:03:24,439 --> 00:03:24,859
missing.

54
00:03:26,119 --> 00:03:31,440
Preserving those structures means we keep
custom MCP validation fully intact,

55
00:03:31,899 --> 00:03:33,100
even after compaction.

56
00:03:34,000 --> 00:03:38,560
And speaking of things breaking under the
hood, they also cleaned up some CLI

57
00:03:38,622 --> 00:03:40,240
argument parsing bugs.

58
00:03:40,427 --> 00:03:47,120
If you ran `codex resume --last` or `codex
fork --last` with a

59
00:03:47,164 --> 00:03:50,240
trailing string, the parser used to get
confused.

60
00:03:50,453 --> 00:03:55,760
It would try to interpret that trailing
string as a session ID instead of the new

61
00:03:55,817 --> 00:03:57,120
prompt you wanted to run.

62
00:03:58,600 --> 00:04:01,759
Ah, the classic CLI ambiguity.

63
00:04:02,440 --> 00:04:07,679
So if you typed `codex resume --last
"refactor the auth route"`,

64
00:04:08,159 --> 00:04:12,639
it would look for a session called
"refactor the auth route" and error out.

65
00:04:13,000 --> 00:04:13,720
Exactly.

66
00:04:13,827 --> 00:04:16,040
It was a frustrating papercut.

67
00:04:16,253 --> 00:04:20,040
In 0.139.0, that's fixed.

68
00:04:20,227 --> 00:04:25,720
It correctly identifies the trailing
string as your new input prompt for the resumed

69
00:04:25,770 --> 00:04:26,200
session.

70
00:04:26,360 --> 00:04:32,360
They also updated `codex doctor` -- it now
prints out your local editor and pager

71
00:04:32,420 --> 00:04:38,360
details, but they've safely redacted
sensitive raw values in the JSON outputs so you

72
00:04:38,400 --> 00:04:42,440
don't accidentally leak API keys when
sharing debug logs.

73
00:04:43,379 --> 00:04:44,659
That's a smart touch.

74
00:04:45,079 --> 00:04:49,979
It's those little developer-experience
guardrails that make a tool feel mature.

75
00:04:50,460 --> 00:04:53,639
It shows they're thinking about the
real-world environments where these tools

76
00:04:53,719 --> 00:04:54,559
actually run.

77
00:04:55,000 --> 00:04:55,960
Absolutely.

78
00:04:56,120 --> 00:05:00,440
It makes you wonder how long before we see
these clean plaintext search patterns

79
00:05:00,543 --> 00:05:04,920
become the default for all
developer-facing LLM integrations.

80
00:05:05,032 --> 00:05:06,920
That's all for today's quick take.

81
00:05:07,160 --> 00:05:08,360
I'm Ethan Park.

82
00:05:10,339 --> 00:05:10,340
And I'm Maya.

83
00:05:10,379 --> 00:05:11,279
We'll see you in the next one.

