1
00:00:00,299 --> 00:00:05,099
If you have ever tried running, uh, say,
three different terminal windows on Windows

2
00:00:05,519 --> 00:00:10,039
with Codex CLI open, you know the exact
pain I am talking about.

3
00:00:10,599 --> 00:00:15,960
Your RAM just disappears, and then, boom,
SQLite database locked.

4
00:00:16,259 --> 00:00:18,220
Oh, the database locks.

5
00:00:18,839 --> 00:00:23,339
Every single subagent spawning its own
entirely separate background server,

6
00:00:23,719 --> 00:00:26,519
fighting over the exact same state files.

7
00:00:26,579 --> 00:00:27,699
It was a mess.

8
00:00:28,042 --> 00:00:29,202
It really was.

9
00:00:29,272 --> 00:00:34,682
And look, before we dive into how OpenAI
just fixed this in Codex CLI version

10
00:00:34,842 --> 00:00:41,642
0.155.0 alpha releases, quick shoutout to
Jellypod for supporting the show

11
00:00:41,742 --> 00:00:45,082
and helping us bring you these daily
technical deep dives.

12
00:00:45,242 --> 00:00:51,962
Now, Maya, version 0.154.0 brought full
Windows daemon parity.

13
00:00:52,319 --> 00:00:57,500
Right, so, so what does daemon parity
actually mean in practice for someone sitting

14
00:00:57,539 --> 00:00:58,559
at a Windows workspace?

15
00:00:58,875 --> 00:01:03,595
It means instead of every single terminal
tab spinning up its own heavy app server

16
00:01:03,675 --> 00:01:08,235
process, they can all attach to one single
background app server daemon.

17
00:01:08,351 --> 00:01:13,835
Multiple interactive sessions, background
tasks, codex exec calls,

18
00:01:13,995 --> 00:01:17,995
all sharing one background process over
local control sockets.

19
00:01:18,319 --> 00:01:23,739
Wait, so one single process managing
state, managing connections,

20
00:01:23,900 --> 00:01:24,500
everything?

21
00:01:25,339 --> 00:01:29,299
That, that completely eliminates the
SQLite lock collisions right there.

22
00:01:29,826 --> 00:01:30,466
Exactly.

23
00:01:30,986 --> 00:01:34,366
And the way they handled process lifecycle
here is really smart.

24
00:01:34,886 --> 00:01:38,007
They moved away from those old file based
shutdown markers.

25
00:01:38,566 --> 00:01:41,646
Now it uses direct socket IPC requests.

26
00:01:42,246 --> 00:01:49,046
You can issue a command like codex daemon
stop, and it coordinates a clean graceful

27
00:01:49,187 --> 00:01:49,626
shutdown.

28
00:01:49,986 --> 00:01:54,486
Which means when an update rolls out, it
can cycle the daemon without just dropping

29
00:01:54,627 --> 00:01:57,786
active connection state or leaving orphan
lock files behind.

30
00:01:58,083 --> 00:01:58,883
Precisely.

31
00:01:59,003 --> 00:02:05,443
But the engineering detail that really
caught my eye in pull requests 42353 and

32
00:02:05,603 --> 00:02:10,483
42405 is how they handled sandbox
provisioning on Windows.

33
00:02:11,106 --> 00:02:12,486
Sandbox provisioning?

34
00:02:12,867 --> 00:02:17,306
Because Windows process isolation has
historically been, uh,

35
00:02:17,446 --> 00:02:21,486
let us say tricky compared to macOS or
Linux sandboxing.

36
00:02:21,875 --> 00:02:22,915
Exactly.

37
00:02:22,979 --> 00:02:27,715
When a persistent background daemon runs
tools on Windows, you do not want

38
00:02:27,766 --> 00:02:32,915
background execution tasks inheriting full
write permissions from the user process.

39
00:02:33,155 --> 00:02:39,555
So Codex now provisions isolated execution
contexts using private desktops and

40
00:02:39,613 --> 00:02:42,195
restricted token Access Control Lists.

41
00:02:42,507 --> 00:02:43,087
Wow.

42
00:02:43,607 --> 00:02:49,387
So even though there is one shared daemon
process, the actual code execution steps

43
00:02:49,567 --> 00:02:53,487
happen inside restricted security tokens
on private desktops,

44
00:02:53,967 --> 00:02:59,227
so background tool runs cannot touch files
outside their assigned ACL permissions.

45
00:02:59,542 --> 00:03:00,262
You got it.

46
00:03:00,369 --> 00:03:04,822
It is a really clean security model for
persistent background tooling.

47
00:03:05,132 --> 00:03:10,333
Okay, but Ethan, there is a big gotcha
here for anyone upgrading their CLI,

48
00:03:10,532 --> 00:03:10,793
right?

49
00:03:11,372 --> 00:03:16,072
If you just run npm install to update,
things might act strange.

50
00:03:16,577 --> 00:03:16,977
Yes!

51
00:03:17,337 --> 00:03:18,537
Very important warning.

52
00:03:19,178 --> 00:03:24,737
If you have an older background daemon
running pre 0.154.0 code,

53
00:03:25,298 --> 00:03:28,897
that old process does not speak the new
socket control protocol.

54
00:03:29,597 --> 00:03:33,298
It will not respond to shutdown requests
over the new IPC socket.

55
00:03:33,814 --> 00:03:38,474
So if you just update the package, the old
daemon is still sitting there holding

56
00:03:38,534 --> 00:03:40,394
onto the port and rendezvous sockets.

57
00:03:40,794 --> 00:03:44,274
You have to manually terminate the old
background process first,

58
00:03:44,634 --> 00:03:45,574
then run your upgrade.

59
00:03:45,917 --> 00:03:46,637
Right.

60
00:03:46,701 --> 00:03:49,677
Kill the running daemon process, then do
your update.

61
00:03:49,837 --> 00:03:56,797
Now, speaking of multiple sessions,
another feature I love in 0.154.0 is pull

62
00:03:56,857 --> 00:03:59,037
request 43253.

63
00:03:59,250 --> 00:04:03,997
It fixes what happens when two terminals
try to open the exact same conversation

64
00:04:04,043 --> 00:04:04,477
thread.

65
00:04:04,799 --> 00:04:06,319
Oh, what happens now?

66
00:04:06,399 --> 00:04:07,799
Does it block you out entirely?

67
00:04:08,208 --> 00:04:09,968
No, it is super graceful.

68
00:04:10,181 --> 00:04:15,088
If you resume a thread that is actively
open in another terminal or app,

69
00:04:15,148 --> 00:04:17,648
Codex shows you a read only transcript
view.

70
00:04:17,768 --> 00:04:23,248
And it puts a clean retry button right
inside the TUI while keeping whatever prompt

71
00:04:23,315 --> 00:04:25,408
draft you were typing safe in memory.

72
00:04:25,757 --> 00:04:27,136
That is huge.

73
00:04:27,637 --> 00:04:31,776
Having your uncommitted draft saved
instead of getting wiped out by a session

74
00:04:31,837 --> 00:04:33,996
collision error is such a relief.

75
00:04:34,333 --> 00:04:38,413
And there are some great editor quality of
life touches in this release too.

76
00:04:38,653 --> 00:04:43,773
In the composer, you now get full Vim
replace mode with capital R,

77
00:04:43,817 --> 00:04:48,013
complete with undo using u and dot repeat
using period.

78
00:04:49,282 --> 00:04:51,081
Vim users rejoice!

79
00:04:51,621 --> 00:04:55,502
Plus, they fixed Escape key handling in
legacy terminal emulators,

80
00:04:55,901 --> 00:04:59,342
so you do not get stuck when trying to
drop out of editing modes.

81
00:04:59,542 --> 00:05:05,462
And the slash copy command got a big
upgrade in pull request 43055.

82
00:05:05,542 --> 00:05:11,622
You can now use slash copy to grab raw
status output or extract individual session

83
00:05:11,679 --> 00:05:13,782
fields directly to your clipboard.

84
00:05:14,151 --> 00:05:19,491
From my testing perspective, having that
centralized daemon management completely

85
00:05:19,611 --> 00:05:22,351
transforms running parallel test suites on
Windows.

86
00:05:23,111 --> 00:05:28,351
I used to see subagent runs crash
constantly because two subagents tried writing

87
00:05:28,491 --> 00:05:31,251
SQLite history at the exact same
millisecond.

88
00:05:32,091 --> 00:05:36,771
Now with the shared daemon handling state
centrally, parallel automated runs are

89
00:05:36,951 --> 00:05:37,871
rock solid.

90
00:05:38,348 --> 00:05:43,567
It makes multi agent workflows on Windows
feel native and stable at last.

91
00:05:44,367 --> 00:05:49,447
That is our look at Codex CLI 0.154.0.

92
00:05:50,067 --> 00:05:54,708
Kill those old daemons before you upgrade,
and enjoy the smooth multi terminal

93
00:05:54,888 --> 00:05:55,327
sessions!

