1
00:00:00,000 --> 00:00:06,240
Because Codex 0.154.0 only gave you a
worktree flag and a slash

2
00:00:06,290 --> 00:00:11,360
command, the agent itself still had no
clean way to isolate its own work.

3
00:00:11,497 --> 00:00:15,120
Thanks to Jellypod to help make this daily
show a reality.

4
00:00:15,240 --> 00:00:22,240
Today is about the change that closes that
gap: pull request 50148,

5
00:00:22,297 --> 00:00:29,200
merged into main on October 2, 2026,
commit e7ea5f4

6
00:00:29,360 --> 00:00:31,520
by bc-openai.

7
00:00:31,787 --> 00:00:38,400
It adds three Model Context Protocol tools
to the Codex TUI: create_worktree,

8
00:00:38,460 --> 00:00:42,240
get_worktree_creation_status, and
list_worktrees.

9
00:00:42,530 --> 00:00:44,890
Let's separate that from what we covered
earlier.

10
00:00:45,410 --> 00:00:52,230
In 0.154.0, a human typed the worktree
flag or the slash command to isolate a task.

11
00:00:52,850 --> 00:00:56,870
This pull request makes worktree
management something the model can call as

12
00:00:56,950 --> 00:00:57,970
structured tools.

13
00:00:58,570 --> 00:01:00,550
And before this, the options were limited.

14
00:01:00,950 --> 00:01:04,670
The agent either ran raw shell commands
like git worktree add,

15
00:01:05,030 --> 00:01:10,090
which risks path conflicts, leaves no
attachment state, and can hit sandbox approval

16
00:01:10,130 --> 00:01:14,250
prompts, or it worked directly inside your
active working copy.

17
00:01:14,583 --> 00:01:15,543
Here's the mechanism.

18
00:01:15,683 --> 00:01:21,623
The tools show up only when
features.worktrees is enabled, and only for a trusted

19
00:01:21,676 --> 00:01:25,543
local Git repository where attachment
storage is available.

20
00:01:25,719 --> 00:01:31,143
Both embedded TUI sessions and background
daemon sessions, the ones started with

21
00:01:31,223 --> 00:01:33,143
codex daemon, are supported.

22
00:01:33,276 --> 00:01:35,703
Creation is asynchronous.

23
00:01:35,843 --> 00:01:41,143
The model calls create_worktree, which
kicks off the work in the background,

24
00:01:41,191 --> 00:01:47,543
then polls get_worktree_creation_status
until it's ready, and uses list_worktrees to

25
00:01:47,607 --> 00:01:50,183
enumerate what exists and find the path.

26
00:01:50,528 --> 00:01:55,308
The detail I'd underline is that
create_worktree does not move the parent task.

27
00:01:55,788 --> 00:01:59,388
The parent task's working directory and
execution environment stay unchanged,

28
00:01:59,848 --> 00:02:02,988
and uncommitted changes on your current
branch are left alone.

29
00:02:03,228 --> 00:02:07,808
So you can have half-finished edits in
your tree, ask the agent to go reproduce

30
00:02:07,848 --> 00:02:10,008
something elsewhere, and keep typing in
your editor.

31
00:02:10,333 --> 00:02:15,853
On branching, if the model passes no ref,
the worktree defaults to the repository's

32
00:02:15,922 --> 00:02:21,933
remote default branch, so origin/main or
origin/master depending on the repo.

33
00:02:22,146 --> 00:02:25,933
If you pass an explicit ref parameter,
that wins.

34
00:02:26,318 --> 00:02:26,998
Setup first.

35
00:02:27,478 --> 00:02:31,618
In your config.toml under the .codex
directory in your home folder,

36
00:02:32,238 --> 00:02:35,538
add a features table and set worktrees
equal to true.

37
00:02:36,058 --> 00:02:40,978
Then check the preconditions: the project
root has to be a trusted Git repository

38
00:02:41,038 --> 00:02:45,758
under your workspace trust policy, and
attachment storage has to be initialized.

39
00:02:46,083 --> 00:02:48,043
Then the prompt does the work.

40
00:02:48,087 --> 00:02:54,403
Something like: reproduce this issue on
origin slash release v2 without touching my

41
00:02:54,443 --> 00:02:55,603
current branch.

42
00:02:55,703 --> 00:03:00,403
The agent should call create_worktree with
ref set to that branch,

43
00:03:00,467 --> 00:03:05,523
poll the status tool, and then call
list_worktrees to discover the path it should

44
00:03:05,573 --> 00:03:06,243
operate in.

45
00:03:06,483 --> 00:03:12,643
It's a good fit for risky test refactors,
reproducing a bug against a clean branch,

46
00:03:12,696 --> 00:03:17,203
or running concurrent builds, anything
where you don't want the agent churning your

47
00:03:17,249 --> 00:03:18,163
active files.

48
00:03:18,467 --> 00:03:20,187
Persistence matters here too.

49
00:03:20,667 --> 00:03:24,027
Created worktrees are attached to the
requesting task or thread,

50
00:03:24,507 --> 00:03:29,267
and the ownership and attachment metadata
survive session restarts and resumes.

51
00:03:29,987 --> 00:03:35,027
If your session drops, codex resume
re-attaches the existing worktree to the active

52
00:03:35,087 --> 00:03:35,447
task.

53
00:03:35,807 --> 00:03:37,747
It does not re-run creation.

54
00:03:38,000 --> 00:03:39,040
Now the guardrails.

55
00:03:39,182 --> 00:03:44,560
Explicitly untrusted projects reject
worktree tool calls outright,

56
00:03:44,613 --> 00:03:47,040
so you need to approve workspace trust
first.

57
00:03:47,440 --> 00:03:51,440
Ephemeral side conversations are blocked
from creating worktrees,

58
00:03:51,480 --> 00:03:55,120
because ephemeral sessions have no
persistent attachment storage.

59
00:03:55,333 --> 00:04:00,800
If several calls fire concurrently, the
engine reuses the pending creation operation

60
00:04:00,880 --> 00:04:02,640
instead of making duplicates.

61
00:04:03,027 --> 00:04:05,347
One more that affects people with MCP
setups.

62
00:04:05,867 --> 00:04:12,467
Codex rejects configured third party MCP
servers whose exported tool names collide

63
00:04:12,507 --> 00:04:14,547
with the TUI worktree namespace.

64
00:04:15,007 --> 00:04:19,807
So if you wrote your own server that
exposes something called list_worktrees,

65
00:04:20,467 --> 00:04:24,027
check that before you upgrade, because
Codex will reject that server.

66
00:04:24,375 --> 00:04:29,255
And on timing: this landed on main on
October 2 and is shipping through the

67
00:04:29,335 --> 00:04:35,015
0.162.0 alpha builds, alpha 1 through
alpha 10.

68
00:04:35,155 --> 00:04:41,975
The latest stable release is 0.160.0, so
stable users get it in the next

69
00:04:42,015 --> 00:04:42,935
general release.

70
00:04:43,095 --> 00:04:45,575
If you want it today, you're on an alpha.

71
00:04:45,682 --> 00:04:47,975
Treat it as pre release behavior.

72
00:04:48,240 --> 00:04:51,660
A few smaller changes from the same
October 1 and 2 window.

73
00:04:52,120 --> 00:04:56,700
First, tui.mouse_scroll_speed, from pull
request 50209.

74
00:04:57,240 --> 00:05:01,080
The default wheel scroll drops from three
rows per event to one.

75
00:05:01,580 --> 00:05:08,500
It accepts float values: 3.0 restores the
old speed, and 0.5 scrolls one row every

76
00:05:08,540 --> 00:05:10,740
two events by accumulating sub rows.

77
00:05:11,042 --> 00:05:15,282
Pull request 50052 helps with lost
context.

78
00:05:15,410 --> 00:05:21,202
When a turn fails, completes, or is
interrupted, an unsent answer in the prompt is

79
00:05:21,250 --> 00:05:26,002
recovered into the composer, now prepended
with the question title as a Markdown

80
00:05:26,069 --> 00:05:29,282
blockquote, bounded to 512 bytes.

81
00:05:29,422 --> 00:05:31,202
You see what you were answering.

82
00:05:31,548 --> 00:05:34,648
Pull request 50219 targets startup hangs.

83
00:05:35,008 --> 00:05:40,208
Tmux option probes now run on a worker
thread with a one second timeout and a 4 KiB

84
00:05:40,348 --> 00:05:43,148
read cap, and hung commands get killed and
reaped.

85
00:05:43,748 --> 00:05:49,648
Separately, pull request 50215 adds
Ctrl+Insert for copying transcript and composer

86
00:05:49,728 --> 00:05:52,548
selections, matching Windows Terminal's
default behavior.

87
00:05:52,875 --> 00:05:59,275
Also in this window: the command center
task rename field now supports Vim normal

88
00:05:59,355 --> 00:06:04,475
and insert modes, with horizontal
scrolling and newlines stripped,

89
00:06:04,507 --> 00:06:07,755
from pull request 50216.

90
00:06:07,892 --> 00:06:13,755
Stable completed Markdown tables now enter
terminal scrollback during streaming

91
00:06:13,845 --> 00:06:20,235
instead of waiting for the end, per pull
request 50207, and they

92
00:06:20,342 --> 00:06:23,195
reflow if trailing link definitions
arrive.

93
00:06:23,355 --> 00:06:30,315
And pull request 50199 keeps your account
email in the slash status output

94
00:06:30,475 --> 00:06:35,035
by re fetching it after account updates,
with a 30 second timeout.

95
00:06:35,362 --> 00:06:39,101
If you try the worktree tools this week,
start with a throwaway repo,

96
00:06:39,402 --> 00:06:44,302
enable the feature flag, and watch whether
the agent actually polls the status tool

97
00:06:44,342 --> 00:06:45,762
before it touches the path.

