1
00:00:00,000 --> 00:00:01,437
Welcome to the show everybody!

2
00:00:01,717 --> 00:00:06,877
I'm Ethan Park, here with Maya, and first
off, a huge shoutout to Jellypod for

3
00:00:06,921 --> 00:00:08,001
supporting the show.

4
00:00:08,209 --> 00:00:13,757
Maya, let's jump straight into the command
line because Codex CLI just dropped

5
00:00:13,807 --> 00:00:20,718
version 0.137.0, and they've also kicked
off the 0.138.0

6
00:00:20,785 --> 00:00:21,599
alpha stream.

7
00:00:21,892 --> 00:00:27,593
If you are managing developer environments
at scale, this one is a massive shift in

8
00:00:27,653 --> 00:00:29,276
how we handle configuration.

9
00:00:30,000 --> 00:00:36,180
Right because up until now configuring
codecs across a massive engineering org was

10
00:00:36,640 --> 00:00:41,180
let's face it a bit of a nightmare You
were basically pushing static files around

11
00:00:41,520 --> 00:00:48,480
But 0 137 0 introduces these cloud managed
config bundles and full support for

12
00:00:48,480 --> 00:00:54,180
EDU workspaces This means admins can
finally distribute global policies directly

13
00:00:54,180 --> 00:00:56,877
from the cloud settings portal Exactly.

14
00:00:56,957 --> 00:01:02,154
No more writing custom script packages
just to update a timeout setting or change a

15
00:01:02,224 --> 00:01:05,439
default model across five hundred
developer laptops.

16
00:01:05,579 --> 00:01:10,797
You set it in the cloud portal, and the
local CLI pulls down those global policies.

17
00:01:10,937 --> 00:01:15,833
And they added a neat little
quality-of-life feature to the local CLI status bar too

18
00:01:16,046 --> 00:01:21,353
-- it now displays monthly enterprise
credit limits directly to the developer in

19
00:01:21,385 --> 00:01:22,073
real-time.

20
00:01:23,000 --> 00:01:29,380
Oh I love that It's like a utility bill
meter right there in your terminal There is

21
00:01:29,380 --> 00:01:34,200
nothing worse than running a massive batch
processing script only to realize halfway

22
00:01:34,200 --> 00:01:38,660
through that you've hit your enterprise
cap and everything is erroring out It's

23
00:01:38,660 --> 00:01:43,439
direct feedback where the developer
actually looks It is super practical.

24
00:01:43,619 --> 00:01:48,638
But, because this is a
point-one-three-seven release, we have to talk about where

25
00:01:48,658 --> 00:01:50,519
the paint is still a little wet.

26
00:01:50,579 --> 00:01:55,916
There are some really fascinating
deserialization gaps in this centralized model

27
00:01:55,996 --> 00:02:00,512
that you will run into immediately if you
try to roll this out today.

28
00:02:00,564 --> 00:02:03,587
Specifically, if you try to set the
`model` or the new

29
00:02:03,747 --> 00:02:17,507
`model_reasoning_effort`

30
00:02:18,707 --> 00:02:24,714
parameter inside those global cloud
policies, the local CLI completely ignores them.

31
00:02:25,000 --> 00:02:30,740
Wait interrupts why would it just ignore
them If the admin sets a global policy in

32
00:02:30,740 --> 00:02:37,160
the cloud saying everyone uses Cloud 3 5
Sonnet how does the CLI just skip that It

33
00:02:37,213 --> 00:02:40,754
comes down to a classic mismatch in the
serialization code.

34
00:02:40,874 --> 00:02:46,754
Under the hood, the Codex CLI is built in
Rust, and there is a specific struct

35
00:02:46,800 --> 00:02:51,708
called `ConfigRequirementsToml` that
handles parsing these incoming settings.

36
00:02:51,852 --> 00:02:56,833
When they updated the cloud schema to
support pushing down model names and reasoning

37
00:02:56,893 --> 00:03:02,597
efforts, they simply forgot to update that
Rust struct to deserialize those specific

38
00:03:02,693 --> 00:03:03,157
keys.

39
00:03:03,370 --> 00:03:08,671
So the JSON payload comes down from the
cloud, the Rust parser looks at it,

40
00:03:08,711 --> 00:03:13,153
doesn't see those fields in the struct
definition, and just silently discards them.

41
00:03:14,720 --> 00:03:21,200
Wow So the data is literally flying over
the wire hitting the machine and then just

42
00:03:21,200 --> 00:03:25,940
evaporating because the parser doesn't
have a slot to put it in That is a classic

43
00:03:25,940 --> 00:03:32,500
early version slip But wait even if they
fix that deserialization bug in the 0 138 0

44
00:03:32,500 --> 00:03:36,780
alpha isn't there another issue with how
local state interacts with these global

45
00:03:36,780 --> 00:03:38,879
policies Yes!

46
00:03:38,927 --> 00:03:41,117
This is the local state override problem.

47
00:03:41,277 --> 00:03:47,196
Codex uses a local SQLite database on the
developer's machine to persist thread

48
00:03:47,249 --> 00:03:52,146
state -- things like your chat history,
active sessions, and local context.

49
00:03:52,293 --> 00:03:57,273
Right now, when you resume a session, that
persisted SQLite thread state

50
00:03:57,347 --> 00:04:01,496
automatically overrides whatever global
model definitions are coming down from the

51
00:04:01,576 --> 00:04:02,136
cloud.

52
00:04:03,000 --> 00:04:09,280
Ahh so even if the Cloud Config could tell
the CLI to use a specific model the

53
00:04:09,280 --> 00:04:14,360
second a developer resumes an existing
thread from their local SQLiteDB the database

54
00:04:14,360 --> 00:04:19,120
says nope we were using this other model 5
minutes ago so we're switching back to

55
00:04:19,120 --> 00:04:22,241
that Local state wins Exactly.

56
00:04:22,315 --> 00:04:23,959
SQLite trumps cloud config.

57
00:04:24,119 --> 00:04:28,762
So if you're an admin trying to force a
transition to a cheaper or more secure

58
00:04:28,829 --> 00:04:33,399
model, your users are still going to be
running on their old local defaults whenever

59
00:04:33,431 --> 00:04:34,440
they resume a thread.

60
00:04:34,640 --> 00:04:39,956
The only real workaround right now is to
have developers manually clear their local

61
00:04:40,002 --> 00:04:45,948
thread database or specify the model flag
explicitly in their local commands,

62
00:04:45,975 --> 00:04:48,988
which completely defeats the purpose of
centralized control.

63
00:04:49,000 --> 00:04:55,200
It's a messy middle ground And speaking of
centralized control what about deep

64
00:04:55,200 --> 00:05:00,060
infrastructure settings Like if I want to
route all my developer telemetry through a

65
00:05:00,060 --> 00:05:04,120
corporate open telemetry collector can I
do that through this new cloud portal

66
00:05:06,647 --> 00:05:07,481
Unfortunately, no.

67
00:05:07,601 --> 00:05:08,361
Not yet.

68
00:05:08,481 --> 00:05:14,121
Centralized telemetry settings, like your
OpenTelemetry endpoints and headers,

69
00:05:14,188 --> 00:05:17,562
still lack any kind of UI coverage in the
cloud settings portal.

70
00:05:17,802 --> 00:05:22,686
If you want to manage those, you are back
to the old-school method: you have to

71
00:05:22,737 --> 00:05:28,929
physically place a `managed_config.toml`
file onto the developer's filesystem using

72
00:05:28,982 --> 00:05:31,809
an MDM tool like Jamf or Intune.

73
00:05:32,000 --> 00:05:37,840
So we're in this hybrid state We have this
beautiful vision of a single cloud

74
00:05:37,840 --> 00:05:44,420
dashboard in 0 137 0 But in practice
engineers are still going to be balancing cloud

75
00:05:44,420 --> 00:05:50,880
policies local SQLite overrides and MDM
pushed TOML files just to keep their

76
00:05:50,880 --> 00:05:55,100
developer fleets in sync It's a step
forward but you definitely need to keep your

77
00:05:55,100 --> 00:05:58,036
automation scripts handy Definitely.

78
00:05:58,089 --> 00:06:04,584
It feels like the foundation is solid, but
we'll be watching the 0.138.0 alpha

79
00:06:04,641 --> 00:06:09,378
stream very closely to see how quickly
they patch these structural gaps.

80
00:06:09,522 --> 00:06:14,338
That's our take on Codex CLI 0.137.0.

81
00:06:14,429 --> 00:06:17,536
Thanks for listening, and we'll catch you
in the next one.

82
00:06:18,000 --> 00:06:18,620
See ya

