1
00:00:00,260 --> 00:00:05,960
So you open a terminal, run codex, and
everything feels a little off.

2
00:00:06,480 --> 00:00:07,220
Slower, maybe.

3
00:00:08,140 --> 00:00:10,780
Your other session's worktrees aren't
showing up.

4
00:00:11,860 --> 00:00:15,680
Turns out you weren't attached to your
shared background daemon at all.

5
00:00:16,440 --> 00:00:20,700
Codex quietly dropped you into embedded
mode, and nobody told you.

6
00:00:21,400 --> 00:00:24,440
That's the behavior a change on main this
week is aimed at.

7
00:00:25,420 --> 00:00:28,480
And thanks to Jellypod to help make this
daily show a reality.

8
00:00:29,490 --> 00:00:33,870
I'm Maya, this is The Codex Changelog, and
a quick orientation first.

9
00:00:34,390 --> 00:00:37,290
Stable is still 0.163.0.

10
00:00:37,990 --> 00:00:44,150
Everything we're covering today landed on
main and shows up in the 0.164.0 alpha

11
00:00:44,230 --> 00:00:49,010
builds, alpha.6 and alpha.7, released
October 19 and 20.

12
00:00:49,510 --> 00:00:52,210
So if you're on stable, you won't see this
yet.

13
00:00:52,570 --> 00:00:55,370
It follows the daemon lifecycle work we
talked about last time,

14
00:00:55,830 --> 00:01:00,850
including the slash daemon restart command
that shipped in 0.163.0.

15
00:01:01,692 --> 00:01:07,272
The change is PR 55442 from etraut-openai,
commit

16
00:01:07,992 --> 00:01:09,632
8196bcd.

17
00:01:10,332 --> 00:01:10,852
Three pieces.

18
00:01:11,652 --> 00:01:16,312
First, the fixed allowlist for boolean
feature overrides in the daemon is gone.

19
00:01:17,312 --> 00:01:22,692
Any boolean flag under the features table
in config.toml, or passed on the command

20
00:01:22,772 --> 00:01:25,852
line, can now be sent to the daemon and
evaluated there.

21
00:01:26,732 --> 00:01:33,092
Second, on startup Codex now explicitly
compares the feature overrides your CLI is

22
00:01:33,172 --> 00:01:36,312
asking for against what the running daemon
reports as active.

23
00:01:37,112 --> 00:01:42,312
Third, if those don't match, Codex stops
and shows an interactive recovery dialog

24
00:01:42,512 --> 00:01:44,312
instead of silently falling back.

25
00:01:44,955 --> 00:01:47,555
Let me spell out why the silent fallback
hurt.

26
00:01:48,095 --> 00:01:51,695
According to the change notes, embedded
mode duplicates memory usage,

27
00:01:52,055 --> 00:01:56,555
causes SQLite database lock contention,
and isolates your session from the shared

28
00:01:56,595 --> 00:01:59,835
background worktrees and the coordinated
OAuth token refreshes.

29
00:02:00,395 --> 00:02:04,535
And the old allowlist meant you couldn't
really test an experimental flag through a

30
00:02:04,575 --> 00:02:05,675
daemon session anyway.

31
00:02:06,135 --> 00:02:10,094
So you'd set a flag, the daemon didn't
know about it, and you ended up in the slow

32
00:02:10,135 --> 00:02:11,795
lane without any indication.

33
00:02:12,718 --> 00:02:14,058
Here's what the dialog looks like.

34
00:02:14,738 --> 00:02:18,558
It lists up to three mismatched features
by name, and if more differ,

35
00:02:18,978 --> 00:02:20,138
it shows a remaining count.

36
00:02:20,938 --> 00:02:22,898
It tells you whether the running daemon is
managed.

37
00:02:23,578 --> 00:02:24,398
Then three choices.

38
00:02:24,978 --> 00:02:27,918
One, restart the managed daemon with your
current settings.

39
00:02:28,538 --> 00:02:30,678
That's marked Recommended when the daemon
is managed.

40
00:02:31,418 --> 00:02:34,178
Two, continue without the daemon in
embedded mode.

41
00:02:34,778 --> 00:02:36,078
Three, cancel startup.

42
00:02:36,952 --> 00:02:38,292
A couple of details I like.

43
00:02:38,832 --> 00:02:41,892
Saved daemon settings are preserved during
automatic startup,

44
00:02:42,092 --> 00:02:45,732
so Codex isn't clobbering your stored
configuration just to start.

45
00:02:46,272 --> 00:02:50,172
And the restart payload only submits the
delta, meaning just the features that

46
00:02:50,312 --> 00:02:52,652
actually mismatch, not your whole config.

47
00:02:53,167 --> 00:02:56,687
To use it, set your overrides in the
config file.

48
00:02:57,307 --> 00:03:03,047
In ~/.codex/config.toml, under the
features table, put

49
00:03:03,567 --> 00:03:07,527
multi_agent_v2 equals true, and

50
00:03:07,647 --> 00:03:11,567
preserve_fork_prefix equals true.

51
00:03:12,227 --> 00:03:19,047
Or use the feature override flag on the
command line with multi_agent_v2 equals

52
00:03:19,147 --> 00:03:19,427
true.

53
00:03:20,187 --> 00:03:24,087
Now if a background daemon is already
running with different settings,

54
00:03:24,507 --> 00:03:25,307
you get the prompt.

55
00:03:25,847 --> 00:03:29,887
Pick option one, the managed daemon
restarts with the new settings,

56
00:03:30,307 --> 00:03:32,187
and your session reconnects automatically.

57
00:03:33,107 --> 00:03:38,587
You can also trigger that yourself from
inside the TUI with slash daemon restart.

58
00:03:39,267 --> 00:03:41,147
Now the caveat, and it's a real one.

59
00:03:41,487 --> 00:03:46,467
Restarting a managed daemon terminates
active background subagents and turns across

60
00:03:46,587 --> 00:03:49,407
every terminal session attached to that
shared daemon.

61
00:03:50,107 --> 00:03:52,407
Codex warns you if active work will be
interrupted.

62
00:03:52,487 --> 00:03:56,407
But if you've got three terminals open and
one is halfway through a long task,

63
00:03:56,887 --> 00:04:00,087
read that warning before you press Enter
on the recommended option.

64
00:04:00,838 --> 00:04:05,298
And choosing embedded mode is fine when
you want it, but that terminal is then cut

65
00:04:05,358 --> 00:04:09,098
off from the shared daemon's cache,
worktrees, and token rotation.

66
00:04:09,838 --> 00:04:11,098
One more thing on the cleanup side.

67
00:04:11,658 --> 00:04:15,918
Removed features are now ignored
gracefully rather than failing validation,

68
00:04:16,438 --> 00:04:19,598
and features the daemon doesn't report
default to disabled.

69
00:04:20,257 --> 00:04:26,838
The example is features.transcript_v2,
retired in PR 55388.

70
00:04:27,458 --> 00:04:27,898
It's gone.

71
00:04:28,478 --> 00:04:34,018
If you want a fullscreen transcript, set
fullscreen_transcript equals true under the

72
00:04:34,078 --> 00:04:35,138
tui table instead.

73
00:04:35,615 --> 00:04:38,255
Now some smaller items from October 19 and
20.

74
00:04:38,895 --> 00:04:43,035
Async questions the agent asks you, the
ones with item type question,

75
00:04:43,535 --> 00:04:45,775
now render through the TUI Markdown
engine.

76
00:04:46,035 --> 00:04:48,535
That's PR 55411.

77
00:04:49,195 --> 00:04:52,895
Fenced code blocks, emphasis, and labeled
URLs display properly,

78
00:04:53,415 --> 00:04:56,775
and overwide tokens wrap without
everything turning bold.

79
00:04:57,435 --> 00:05:04,255
The dollar sign file and context picker,
PR 55596, now ranks by

80
00:05:04,315 --> 00:05:09,095
how often you pick things, within the
exact, prefix, and fuzzy match tiers.

81
00:05:10,095 --> 00:05:13,455
It tracks up to 50 confirmed selections in

82
00:05:13,455 --> 00:05:17,135
~/.codex/mention_usage.json.

83
00:05:18,115 --> 00:05:22,455
So that's a local file you can inspect, or
delete if you want a fresh ranking.

84
00:05:23,082 --> 00:05:26,802
There's also a resilience fix in PR 55409.

85
00:05:27,422 --> 00:05:31,482
If a remote server refuses thread start
because it's shutting down or draining,

86
00:05:31,982 --> 00:05:36,142
Codex now catches that refusal, waits for
the draining connection to close,

87
00:05:36,682 --> 00:05:41,082
reconnects within a two minute deadline,
and retries startup once.

88
00:05:41,682 --> 00:05:45,222
Your prompt draft, model selection, and
reasoning effort are preserved.

89
00:05:45,995 --> 00:05:52,155
On the security side, PR 55384 hardens the
Linux launcher that runs before the

90
00:05:52,195 --> 00:05:52,675
sandbox.

91
00:05:53,595 --> 00:05:58,655
It verifies that lookup paths, parent
directory aliases, and the canonical targets

92
00:05:58,695 --> 00:06:03,715
for executables like bwrap can't be
swapped out through writable symlinks or sticky

93
00:06:03,795 --> 00:06:04,775
directory overrides.

94
00:06:05,393 --> 00:06:06,593
Two for API users.

95
00:06:07,073 --> 00:06:10,773
PR 55587 decouples prompt cache keys.

96
00:06:11,193 --> 00:06:15,393
With StartThreadOptions, you can set
PromptCacheKey to inherit the session key,

97
00:06:15,773 --> 00:06:19,573
supply your own, or omit prompt_cache_key
entirely.

98
00:06:20,053 --> 00:06:23,413
That lets threads share a cache without
you rewriting session IDs.

99
00:06:24,013 --> 00:06:27,213
And PR 55407 clarifies login status.

100
00:06:27,713 --> 00:06:32,613
Entering an API key reports API key saved
and API key configured,

101
00:06:33,033 --> 00:06:36,053
and it states that authentication is
verified on your first request,

102
00:06:36,433 --> 00:06:37,253
not when you type it in.

103
00:06:38,127 --> 00:06:38,827
So the takeaway.

104
00:06:39,527 --> 00:06:43,687
If you're running the alpha, check your
features table against your running daemon

105
00:06:43,787 --> 00:06:48,467
before you start a long session, and look
at the mismatch prompt instead of

106
00:06:48,487 --> 00:06:49,007
dismissing it.

107
00:06:49,787 --> 00:06:55,947
If you're on stable 0.163.0, you can use
slash daemon restart today and wait for

108
00:06:55,987 --> 00:06:56,507
this to land.

109
00:06:57,307 --> 00:06:58,327
That's the changelog for today.

