1
00:00:00,119 --> 00:00:04,219
If you have ever tried running local
developer tools behind an internal proxy,

2
00:00:04,980 --> 00:00:10,159
you, you know the exact pain of firing up
a tool like Codex with a local backend,

3
00:00:10,619 --> 00:00:12,199
passing that search flag, and...

4
00:00:13,840 --> 00:00:15,880
watching it completely explode.

5
00:00:16,520 --> 00:00:21,000
Oh, and quick hat tip to Jellypod for
helping us bring this daily break to your ears

6
00:00:21,459 --> 00:00:22,059
every morning.

7
00:00:22,680 --> 00:00:27,979
But yeah, if you were using LM Studio, or
OmniRoute, or some custom corporate

8
00:00:28,059 --> 00:00:31,079
gateway, that search flag was basically a
dead end.

9
00:00:32,245 --> 00:00:33,224
Oh, I remember that.

10
00:00:33,724 --> 00:00:37,884
You would pass minus minus search to your
custom endpoint, and it would either

11
00:00:38,164 --> 00:00:43,484
silently drop the search parameters
completely or just throw a cryptic payload error

12
00:00:43,524 --> 00:00:44,384
back in your face.

13
00:00:45,085 --> 00:00:46,204
Why was it doing that?

14
00:00:46,542 --> 00:00:51,742
Well, it all came down to an underlying
architectural limitation in how Codex was

15
00:00:51,786 --> 00:00:53,142
originally wired up.

16
00:00:53,232 --> 00:00:58,702
The historical web search mechanism relied
strictly on OpenAI native tool schemas.

17
00:00:58,915 --> 00:01:03,582
So the moment you tried to route a prompt
through something like LM Studio or an

18
00:01:03,640 --> 00:01:08,622
enterprise proxy, the proxy didn't know
what to do with those proprietary OpenAI

19
00:01:08,668 --> 00:01:09,662
search tool calls.

20
00:01:09,875 --> 00:01:13,662
It just didn't speak that specific
protocol, so it broke.

21
00:01:14,146 --> 00:01:19,667
Right, so if you were not using OpenAI
directly, you were basically locked out of

22
00:01:19,826 --> 00:01:22,646
live web retrieval inside your developer
workflow.

23
00:01:23,366 --> 00:01:27,826
But that just changed in release 0.146.0,
right?

24
00:01:27,986 --> 00:01:30,006
Pull request 34846?

25
00:01:30,250 --> 00:01:31,450
Yes, exactly!

26
00:01:31,578 --> 00:01:37,690
Pull request 34846 in Codex release
0.146.0

27
00:01:37,794 --> 00:01:39,450
addresses this head on.

28
00:01:39,578 --> 00:01:45,370
They added a brand new configuration
toggle called supports standalone web search.

29
00:01:45,510 --> 00:01:50,970
And the explicit goal of this pull request
was to enable standalone web search for

30
00:01:51,021 --> 00:01:52,970
compatible custom model providers.

31
00:01:53,098 --> 00:01:55,450
That is literally the core fix here.

32
00:01:55,817 --> 00:01:59,157
Wait, okay, so where does that toggle
actually live?

33
00:01:59,717 --> 00:02:04,218
Is it in a workspace configuration file,
or environment variables,

34
00:02:04,258 --> 00:02:04,718
or what?

35
00:02:05,000 --> 00:02:11,800
It lives right in your config dot toml
file, under dot codex slash config dot toml.

36
00:02:11,960 --> 00:02:17,400
You go into the section for model
providers dot whatever your provider name is,

37
00:02:17,440 --> 00:02:21,880
and you add supports standalone web search
equals true.

38
00:02:22,056 --> 00:02:27,800
Once you set that flag, Codex stops
expecting the LLM provider itself to handle the

39
00:02:27,857 --> 00:02:29,240
native search tool schema.

40
00:02:29,370 --> 00:02:34,440
Instead, it routes those live web queries
out to a dedicated standalone search

41
00:02:34,511 --> 00:02:35,160
endpoint.

42
00:02:35,486 --> 00:02:37,326
Oh, that is huge!

43
00:02:37,887 --> 00:02:43,006
So if an engineering team is running their
own self hosted open source model or a

44
00:02:43,086 --> 00:02:48,746
private internal LLM backend, they get
live web search without having to rely on

45
00:02:48,806 --> 00:02:51,566
OpenAI hosted infrastructure at all.

46
00:02:51,687 --> 00:02:54,587
And without having to modify their model
call signatures!

47
00:02:54,917 --> 00:02:55,637
Precisely.

48
00:02:55,797 --> 00:03:00,837
It completely decouples the web retrieval
layer from the specific model provider's

49
00:03:00,885 --> 00:03:02,117
tool calling abilities.

50
00:03:02,304 --> 00:03:07,717
If your proxy or adapter can answer that
search endpoint, your custom setup gets

51
00:03:07,797 --> 00:03:10,117
live web access right out of the box.

52
00:03:10,405 --> 00:03:15,724
Okay, so let us talk about how this
actually works under the hood when you toggle

53
00:03:15,784 --> 00:03:18,204
supports standalone web search to true.

54
00:03:18,965 --> 00:03:22,564
What does the backend adapter actually
need to receive and process?

55
00:03:22,875 --> 00:03:28,955
So when you set supports standalone web
search equals true in dot codex slash config

56
00:03:28,975 --> 00:03:35,355
dot toml, Codex will send a HTTP request
over to POST slash alpha slash

57
00:03:35,446 --> 00:03:36,075
search.

58
00:03:36,203 --> 00:03:41,995
That payload carries structured search
query parameters, specifically q for the text

59
00:03:42,048 --> 00:03:47,995
query, recency for filtering by time, and
domains if you are restricting the search

60
00:03:48,048 --> 00:03:49,275
to specific sites.

61
00:03:49,651 --> 00:03:55,192
Okay, but what happens if the tool tries
to do something fancy like taking a browser

62
00:03:55,311 --> 00:03:57,131
snapshot or clicking a link?

63
00:03:57,771 --> 00:04:01,551
Does the custom search endpoint have to
handle full browser automation?

64
00:04:02,054 --> 00:04:04,894
That is actually a critical operational
caveat.

65
00:04:05,454 --> 00:04:09,875
The backend search adapter has to sanitize
unsupported browser actions like

66
00:04:09,954 --> 00:04:13,715
screenshot or click by returning explicit
error messages.

67
00:04:14,394 --> 00:04:17,755
It cannot just hang or return malformed
data.

68
00:04:17,814 --> 00:04:23,014
And obviously, network teams need to
verify outbound firewall policies before anyone

69
00:04:23,074 --> 00:04:27,094
sets web search equals live on their local
Codex instances,

70
00:04:27,795 --> 00:04:33,614
or else those requests to POST slash alpha
slash search will just get blocked at the

71
00:04:33,694 --> 00:04:34,075
perimeter.

72
00:04:34,405 --> 00:04:35,784
That makes total sense.

73
00:04:36,284 --> 00:04:40,384
Security teams definitely need to audit
where those outbound search queries are

74
00:04:40,404 --> 00:04:40,704
going.

75
00:04:41,504 --> 00:04:47,904
Beyond the search stuff, though, release
0.146.0 shipped a bunch of really nice

76
00:04:47,984 --> 00:04:50,965
quality of life upgrades for daily
terminal usage, didn't it?

77
00:04:51,333 --> 00:04:53,573
Oh yeah, a couple of really handy ones.

78
00:04:53,693 --> 00:04:56,533
First off, inline session naming.

79
00:04:56,673 --> 00:05:03,253
Now you can type slash new followed by a
session name, or slash clear followed by a

80
00:05:03,317 --> 00:05:08,053
name, to immediately label your working
thread right when you create or reset it.

81
00:05:08,320 --> 00:05:12,533
No more digging through random session IDs
trying to figure out which terminal

82
00:05:12,590 --> 00:05:14,613
window had your refactoring work.

83
00:05:15,924 --> 00:05:21,264
Oh, I am so guilty of having ten open
terminal tabs all named default session.

84
00:05:21,824 --> 00:05:24,944
That slash new feature is going to save me
so much headaches.

85
00:05:25,724 --> 00:05:30,144
What about the dynamic environment
validation fix in pull request 34784?

86
00:05:30,500 --> 00:05:31,460
Ah, right!

87
00:05:31,588 --> 00:05:38,100
Pull request 34784 fixes a bug where users
could accidentally name dynamic

88
00:05:38,149 --> 00:05:39,220
environments local.

89
00:05:39,440 --> 00:05:44,100
Codex now explicitly rejects naming a
dynamic environment local,

90
00:05:44,190 --> 00:05:48,180
because local is a reserved keyword for
your actual host environment.

91
00:05:48,340 --> 00:05:54,340
Naming a remote or isolated sandbox local
was causing all kinds of weird path

92
00:05:54,391 --> 00:05:55,700
resolution conflicts.

93
00:05:57,371 --> 00:06:02,131
Yeah, naming a container local sounds like
a recipe for deleting your actual root

94
00:06:02,171 --> 00:06:03,311
directory by accident!

95
00:06:03,871 --> 00:06:08,672
And wasn't there also a terminal freezing
fix involving giant lines of text in pull

96
00:06:08,731 --> 00:06:10,712
request 34796?

97
00:06:11,125 --> 00:06:11,885
Yes!

98
00:06:11,957 --> 00:06:18,565
Pull request 34796 fixes terminal freezing
when outputting massive log files or

99
00:06:18,605 --> 00:06:19,925
minified code.

100
00:06:20,058 --> 00:06:24,965
If any single line of output exceeds four
KiB, four kibibytes,

101
00:06:25,125 --> 00:06:31,285
Codex now automatically suppresses TUI
syntax highlighting for that specific line.

102
00:06:31,418 --> 00:06:36,565
It turns out trying to run regex syntax
highlighting on an eighty kilobyte single

103
00:06:36,629 --> 00:06:40,725
line JSON string was completely locking up
people's terminals.

104
00:06:41,067 --> 00:06:47,247
Wow, automatically dropping syntax
highlighting on anything over four KiB is such a

105
00:06:47,367 --> 00:06:48,867
smart pragmatic fix.

106
00:06:49,767 --> 00:06:54,567
Well, between standalone search for custom
providers and terminal performance fixes,

107
00:06:55,588 --> 00:06:58,787
0.146.0 is a massive update.

108
00:06:59,468 --> 00:07:00,628
Good stuff as always, Ethan!

