Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
285 commits
Select commit Hold shift + click to select a range
b214258
fix(codex): attribute Spark 5h header windows to the model limit, not…
lidge-jun Sep 9, 2026
cd41608
docs(devlog): dispatch roadmap for the post-2.49 delivery round
lidge-jun Sep 9, 2026
91db6c2
Merge pull request #4128 from lidge-jun/codex/spark-short-quota-4122
lidge-jun Sep 9, 2026
e3a4f0a
docs(devlog): move the closed Spark short-quota unit to _fin
lidge-jun Sep 9, 2026
5744b12
Merge remote-tracking branch 'origin/dev' into work4084
lidge-jun Sep 9, 2026
d1e6094
docs(security): document the private follow-up path for pending reports
lidge-jun Sep 9, 2026
dec8306
docs: bound the WS prelude deadline by connectTimeoutMs
lidge-jun Sep 9, 2026
fad2b8d
Merge remote-tracking branch 'origin/dev' into work4068
lidge-jun Sep 9, 2026
80eded0
Merge pull request #4114 from lidge-jun/ingw/fix-4110-owned-root-guid…
lidge-jun Sep 9, 2026
865082b
fix(responses): recover encrypted agent tasks on mid-thread model swi…
lidge-jun Sep 9, 2026
cf967c3
docs(security): make the public-or-private test disclosure, not sourc…
lidge-jun Sep 9, 2026
3b4d8c4
Merge pull request #4132 from lidge-jun/codex/spark-quota-devlog-fin
lidge-jun Sep 9, 2026
da9aef5
feat(logs): surface and filter the routed account label per request
lidge-jun Sep 9, 2026
6578cab
docs(provider): explain the opencode-free Zen lock-in instead of leak…
lidge-jun Sep 9, 2026
c122436
feat(proxy): make the inbound body admission limit configurable
lidge-jun Sep 9, 2026
df117bc
docs(agents): cover mid-thread switches in encrypted v2 task recovery
lidge-jun Sep 9, 2026
6a260ea
docs(devlog): record the docs sync and point the unit at PR #4135
lidge-jun Sep 9, 2026
92e6f5a
test(server): make the listener-limit regression robust to Bun's refu…
lidge-jun Sep 9, 2026
024e43d
feat(web-search): opt-in hosted web-search bridge for key-auth Respon…
lidge-jun Sep 9, 2026
40e183e
docs(provider): mirror the Zen lock-in note into the seven translated…
lidge-jun Sep 9, 2026
d693361
fix(skills): declare --account in the capability registry, not only t…
lidge-jun Sep 9, 2026
38fc4f6
test(web-search): pin the passthrough web-search bridge arming, strea…
lidge-jun Sep 9, 2026
5c74f76
fix(codex): persist a terminal validation verdict for a revoked pool …
lidge-jun Sep 9, 2026
2156fbe
devlog: open the codex credential health chain unit
lidge-jun Sep 9, 2026
5669b96
Merge pull request #4127 from lidge-jun/ingw/fix-4112-json-overflow
lidge-jun Sep 9, 2026
0e95eb7
docs(agents): state both combo recovery triggers in every locale
lidge-jun Sep 9, 2026
f982af4
Merge pull request #4133 from lidge-jun/codex/security-private-follow…
lidge-jun Sep 9, 2026
e748566
fix(responses): keep the passthrough relay source-oracle invariants i…
lidge-jun Sep 9, 2026
cd8fbb4
Merge pull request #4084 from S0RYUASUKA/fix/codex-ws-prelude-90s
lidge-jun Sep 9, 2026
f757a47
Merge pull request #4068 from chilung-cgu/fix/issue-3926-google-model…
lidge-jun Sep 9, 2026
9152450
Merge pull request #4136 from lidge-jun/codex/opencode-free-zen-locki…
lidge-jun Sep 9, 2026
7dd50ea
Merge pull request #4134 from lidge-jun/codex/log-account-identity-4057
lidge-jun Sep 9, 2026
1b64bd3
Merge pull request #4138 from lidge-jun/codex/3573-configurable-inbou…
lidge-jun Sep 9, 2026
672ac60
Merge pull request #4135 from lidge-jun/codex/mid-thread-agent-task-r…
lidge-jun Sep 9, 2026
71a0c30
Merge pull request #4140 from lidge-jun/codex/codex-terminal-validati…
lidge-jun Sep 9, 2026
aeb86cb
Merge the terminal-validation fix (#4120) into quota-deferred registr…
lidge-jun Sep 9, 2026
3557ada
fix(web-search): withhold client tool calls, place the search cell in…
lidge-jun Sep 9, 2026
703f002
Merge origin/dev into quota-deferred registration
lidge-jun Sep 9, 2026
2c4393b
feat(oauth): report an explicit account plan field for OAuth providers
lidge-jun Sep 9, 2026
aff8a22
Merge pull request #4142 from lidge-jun/codex/passthrough-web-search-…
lidge-jun Sep 9, 2026
f8f93af
Merge pull request #3848 from shaun0927/fix/codex-quota-registration-…
lidge-jun Sep 9, 2026
6d99a18
Merge pull request #4146 from lidge-jun/codex/anthropic-account-plan-…
lidge-jun Sep 9, 2026
c8c2382
docs(devlog): record the post-2.49 delivery round outcome
lidge-jun Sep 9, 2026
58acdae
Merge pull request #4125 from lidge-jun/codex/260909-post249-scope-cl…
lidge-jun Sep 9, 2026
75eb28e
fix(combos): classify a hopping 413 when the combo exhausts its targe…
lidge-jun Sep 9, 2026
5095f1b
fix(management): repoint two route ownerDocs at their _fin locations\…
lidge-jun Sep 9, 2026
cd813d3
Merge pull request #4150 from lidge-jun/codex/combo-413-overflow-4149
lidge-jun Sep 9, 2026
527e4db
docs(devlog): lock the round-2 two-lane delivery roadmap
lidge-jun Sep 9, 2026
9abb663
docs(devlog): re-split the round-2 lanes after the roadmap audit
lidge-jun Sep 9, 2026
3b9fab9
docs(devlog): add the round-2 delivery ledger
lidge-jun Sep 9, 2026
a7509fe
Merge pull request #4155 from lidge-jun/codex/devlog-post249-round2
lidge-jun Sep 9, 2026
f4fae62
feat(catalog): classify discovered model pricing and filter free models
lidge-jun Sep 9, 2026
abf35fa
fix(zcode): export reasoning configuration for thought-capable models
richardfeiliu-a11y Sep 9, 2026
79fec5d
fix(responses): let a combo shadow-call target enter the failover loop
lidge-jun Sep 9, 2026
3b457aa
fix(models): explain the discovery dependency when model sync fails
lidge-jun Sep 9, 2026
3ff57ce
fix(catalog): pin pricingStatus on the wire and align the Free switch…
lidge-jun Sep 9, 2026
3dc7bd1
fix(catalog): pin pricingStatus on the wire and align the Free switch…
lidge-jun Sep 9, 2026
421aea8
test(responses): keep the #4129 combo fixture off the fixed-endpoint …
lidge-jun Sep 9, 2026
4498fb9
Merge pull request #4157 from lidge-jun/lane-a/1-4129
lidge-jun Sep 9, 2026
799330b
fix(claude): keep mid-conversation system messages in the timeline
lidge-jun Sep 9, 2026
5b8f1fc
Merge pull request #4161 from lidge-jun/lane-a/2-4148
lidge-jun Sep 9, 2026
8d751bb
docs(devlog): record the round-2 landings and the two blockers
lidge-jun Sep 9, 2026
05f47fb
Merge pull request #4162 from lidge-jun/codex/devlog-round2-ledger
lidge-jun Sep 9, 2026
c8a734c
feat(privacy): let an operator opt out of email masking
lidge-jun Sep 9, 2026
2ce5f38
Merge pull request #4153 from richardfeiliu-a11y/fix/zcode-export-rea…
lidge-jun Sep 9, 2026
084e8af
docs(readme): resync every non-English README and gate them against d…
lidge-jun Sep 9, 2026
9ba04b6
fix(service): stop the test suite from mutating a live service manage…
lidge-jun Sep 9, 2026
8a5cfd3
Merge pull request #4160 from lidge-jun/lane-b/3-3859
lidge-jun Sep 9, 2026
db846c6
fix(models): count the scoped set in the provider header under Free only
lidge-jun Sep 9, 2026
351f44f
docs(devlog): record #4147, #3859, and the #4141 unblock
lidge-jun Sep 9, 2026
e6d8d23
Merge pull request #4163 from lidge-jun/codex/devlog-round2-ledger-2
lidge-jun Sep 9, 2026
ae057c4
fix(service): recover a stale launchd job with bootout before load
lidge-jun Sep 9, 2026
04c4a80
feat(catalog): mark quota-exhausted models and combos inactive
lidge-jun Sep 9, 2026
a3578aa
feat(logs): show an estimated decode rate alongside end-to-end throug…
lidge-jun Sep 10, 2026
95a3f6a
Merge pull request #4164 from lidge-jun/lane-a/3-4141
lidge-jun Sep 10, 2026
593360f
fix(catalog): stamp the inactive reason on the no-template derivation…
lidge-jun Sep 10, 2026
5c3e7e7
fix(catalog): carry the inactive reason onto custom dashboard rows an…
lidge-jun Sep 10, 2026
b19fa9e
fix(logs): render the decode rate on attempts and keep it out of requ…
lidge-jun Sep 10, 2026
d5e042c
fix(logs): stop passing requestLogDto point-free to Array.map
lidge-jun Sep 10, 2026
7945635
docs(devlog): close the round-2 record at the screenshot gate
lidge-jun Sep 10, 2026
c15a98c
Merge pull request #4168 from lidge-jun/codex/devlog-round2-close
lidge-jun Sep 10, 2026
07d7f49
fix(models): let the Free-only narrowing lapse with its own switch
lidge-jun Sep 10, 2026
2b1146e
Merge pull request #4156 from lidge-jun/lane-b/1-3666
lidge-jun Sep 10, 2026
42880cd
Merge branch 'dev' into lane-b/2-4075
lidge-jun Sep 10, 2026
9fc12a7
Merge branch 'dev' into lane-b/5-4038
lidge-jun Sep 10, 2026
8471ecc
Merge pull request #4158 from lidge-jun/lane-b/2-4075
lidge-jun Sep 10, 2026
386b6a0
Merge pull request #4166 from lidge-jun/lane-b/5-4038
lidge-jun Sep 10, 2026
ae56a60
Merge branch 'dev' into lane-b/4-1711
lidge-jun Sep 10, 2026
27836a0
Merge pull request #4165 from lidge-jun/lane-b/4-1711
lidge-jun Sep 10, 2026
b2d3a29
docs(devlog): record the Lane B landing and the screenshot-gate waiver
lidge-jun Sep 10, 2026
f94dd88
Merge pull request #4180 from lidge-jun/codex/devlog-round2-lane-b-la…
lidge-jun Sep 10, 2026
12c248f
docs(devlog): Cursor ACP -> OpenCodex feasibility investigation (#4186)
lidge-jun Sep 10, 2026
d375d75
chore(release): open dev at 2.51.0 before releasing 2.50.0
github-actions[bot] Sep 10, 2026
cf44f6f
Merge pull request #4194 from lidge-jun/codex/dev-version-2.51.0
lidge-jun Sep 10, 2026
14d307a
docs(devlog): plan the 2.50.0 regression audit and release train
lidge-jun Sep 10, 2026
480ecd7
docs(devlog): fold the roadmap audit findings into the 2.50.0 plan
lidge-jun Sep 10, 2026
ecd27aa
docs(devlog): pin the 2.50.0 promotion source and method
lidge-jun Sep 10, 2026
fb2118e
docs(devlog): write the wp3 triage and remediation protocol
lidge-jun Sep 10, 2026
5110586
docs(devlog): specify the six audit lane dispatch packets
lidge-jun Sep 10, 2026
d206d3c
docs(devlog): close the packet and triage holes the third audit round…
lidge-jun Sep 10, 2026
b8f6db2
docs(devlog): record the six-lane regression audit result for 2.50.0
lidge-jun Sep 10, 2026
aa3dfcc
docs(devlog): record the 2.50.0 release-readiness decision
lidge-jun Sep 10, 2026
2cf35c8
docs(devlog): write the 2.50.0 execution runbook
lidge-jun Sep 10, 2026
af190ef
docs(devlog): record the 2.50.0 promotion through main
lidge-jun Sep 10, 2026
aeeddfc
docs(devlog): record the verified 2.50.0 release artifacts
lidge-jun Sep 10, 2026
188d925
docs(devlog): close the 2.50.0 unit with the delivery record
lidge-jun Sep 10, 2026
6d3ad12
Merge pull request #4196 from lidge-jun/codex/260910-250-regression-a…
lidge-jun Sep 10, 2026
39409f9
docs(devlog): plan the 260911 lane dispatch round
lidge-jun Sep 10, 2026
1ae5c24
docs(devlog): record the round PR and lane seed commits in the ledger
lidge-jun Sep 10, 2026
1ff816a
docs(devlog): fold audit round 1 into the lane territories and packets
lidge-jun Sep 10, 2026
555321e
docs(devlog): fold audit round 2 into explicit lane ownership and nam…
lidge-jun Sep 10, 2026
ccda2d2
docs(devlog): regenerate the ledger from live git and gh output
lidge-jun Sep 10, 2026
33d4ee2
docs(devlog): fold audit round 3 and record the one rejected finding
lidge-jun Sep 10, 2026
538668b
docs(devlog): add the per-lane dispatch handoff
lidge-jun Sep 10, 2026
0aa6850
Merge pull request #4217 from lidge-jun/codex/260911-lane-dispatch-round
lidge-jun Sep 10, 2026
0f61ab6
docs(devlog): record the published lane branches and the wp2 publish …
lidge-jun Sep 10, 2026
6a3774c
docs(devlog): record the wp2 push execution and its remote verification
lidge-jun Sep 10, 2026
183e1bb
Merge pull request #4220 from lidge-jun/codex/260911-round-ledger-1
lidge-jun Sep 10, 2026
9f550ae
docs(devlog): mechanize the lane tracking refresh and fix the wp4 mer…
lidge-jun Sep 10, 2026
cc871a8
Merge pull request #4221 from lidge-jun/codex/260911-round-tracking-1
lidge-jun Sep 10, 2026
f73fcc5
docs(devlog): fold the seven-lane feasibility audit into lane ownersh…
lidge-jun Sep 10, 2026
6101140
Merge pull request #4223 from lidge-jun/codex/260911-round-feasibility-1
lidge-jun Sep 10, 2026
6db04ea
docs(devlog): seed the L1 dispatch packet
lidge-jun Sep 10, 2026
9e75542
fix(opencode-go): give sessionless requests an isolated session lane
lidge-jun Sep 10, 2026
7b249fb
docs(devlog): seed the L5 dispatch packet
lidge-jun Sep 10, 2026
6b033f1
fix(integrations): refuse an integration write that would take the fi…
lidge-jun Sep 10, 2026
814ce99
Merge pull request #4226 from lidge-jun/codex/260911-l1-responses-core
lidge-jun Sep 10, 2026
ed839a3
Merge pull request #4227 from lidge-jun/codex/260911-l5-integrations-io
lidge-jun Sep 10, 2026
aa78890
docs(devlog): seed the L7 dispatch packet
lidge-jun Sep 10, 2026
0f0e226
docs(devlog): seed the L3 dispatch packet
lidge-jun Sep 10, 2026
64cc0ad
docs(devlog): seed the L2 dispatch packet
lidge-jun Sep 10, 2026
1bce6fa
docs(devlog): seed the L6 dispatch packet
lidge-jun Sep 10, 2026
4863316
docs(devlog): seed the L4 dispatch packet
lidge-jun Sep 10, 2026
8fa67f9
fix(bigmodel): admit the Responses Coding Plan preset to the quota re…
lidge-jun Sep 10, 2026
7f91737
fix(codex): warm up new ChatGPT Free accounts instead of blaming the …
lidge-jun Sep 10, 2026
d4d52fc
docs(devlog): record the L3 WP1 carry and the diagnostic gap it closed
lidge-jun Sep 10, 2026
bf7585a
fix(update): support native pnpm self-updates
lidge-jun Sep 10, 2026
7556be8
docs(devlog): record the #4201 quota admission and the Flash decision
lidge-jun Sep 10, 2026
2d79b39
docs(devlog): record the upstream evidence behind the Flash deferral
lidge-jun Sep 10, 2026
030316c
fix(responses): classify Codex WS failures instead of restating them
lidge-jun Sep 10, 2026
803c5b4
test(update): cover pnpm's isolated virtual store in the ownership rule
lidge-jun Sep 10, 2026
abec9ee
fix(codex): name the account that left the pool instead of only dropp…
lidge-jun Sep 10, 2026
dfe2b5e
docs(devlog): record the L3 WP2 attribution unit and its two out-of-s…
lidge-jun Sep 10, 2026
ad36a59
Merge pull request #4230 from lidge-jun/codex/260911-l3-account-pool
lidge-jun Sep 10, 2026
df65a25
Merge pull request #4231 from lidge-jun/codex/260911-l2-catalog-provider
lidge-jun Sep 10, 2026
785a3a2
fix(qoder): refuse vendor CLI scaffolding in routed output
lidge-jun Sep 10, 2026
848adbb
fix(update): key the Bun size gate on the directory, as before the carry
lidge-jun Sep 10, 2026
de1d887
feat(codex): let an operator keep a downgraded account out of pool ro…
lidge-jun Sep 10, 2026
46e2a37
docs(devlog): record the L3 WP3 plan-policy unit and its packet depar…
lidge-jun Sep 10, 2026
091b7f3
docs(devlog): lock the L7 wordings for #4215 and #4200
lidge-jun Sep 10, 2026
8dcd1c1
test(codex): pin the boot-probe guard by what it wraps, not by adjacency
lidge-jun Sep 10, 2026
1ada8f5
fix(stop): name the real refusal cause instead of asserting ownership
lidge-jun Sep 10, 2026
9e4654a
docs(devlog): record the wp2 stop-refusal work-phase
lidge-jun Sep 10, 2026
6db526a
docs(providers): state which account each provider login spends
lidge-jun Sep 10, 2026
ee61b48
docs(devlog): record the #4215 delivery and what three audits changed
lidge-jun Sep 10, 2026
9627fe2
fix(client): refuse a hub catalog the local Codex CLI cannot parse
lidge-jun Sep 10, 2026
8f3e0b8
docs(devlog): record the wp3 client-catalog work-phase
lidge-jun Sep 10, 2026
59d2dc4
docs(remote-hub): make the setup runnable on a fresh config and close…
lidge-jun Sep 10, 2026
cdf52e0
docs(devlog): record the #4200 delivery and the loopback-bind finding
lidge-jun Sep 10, 2026
9cdcb43
fix(qoder): stop forwarding the region between a suppressed block and…
lidge-jun Sep 11, 2026
99028b6
fix(qoder): close three more scaffolding leaks in the routed-output g…
lidge-jun Sep 11, 2026
160a58f
Merge pull request #4233 from lidge-jun/codex/260911-l3-account-attri…
lidge-jun Sep 11, 2026
55c74ac
Merge pull request #4235 from lidge-jun/codex/260911-l4-service-cli
lidge-jun Sep 11, 2026
9341de0
Merge pull request #4232 from lidge-jun/codex/260911-l6-streaming-tools
lidge-jun Sep 11, 2026
271a0ab
Merge pull request #4239 from lidge-jun/codex/260911-l7-docs
lidge-jun Sep 11, 2026
59f3778
Merge pull request #4238 from lidge-jun/codex/260911-l3-pool-plan-policy
lidge-jun Sep 11, 2026
bb17773
Merge pull request #4237 from lidge-jun/codex/260911-l4-stop-refusal
lidge-jun Sep 11, 2026
0589579
Merge pull request #4234 from lidge-jun/codex/260911-l6-qoder-scaffold
lidge-jun Sep 11, 2026
09e99eb
Merge pull request #4241 from lidge-jun/codex/260911-l7-remote-hub
lidge-jun Sep 11, 2026
babb764
Merge pull request #4240 from lidge-jun/codex/260911-l4-client-catalog
lidge-jun Sep 11, 2026
7ff8d07
fix(service): make macOS repair verify, roll back, and stop evicting …
lidge-jun Sep 11, 2026
13ca31d
test(service): cover the launchd repair protocol and the load tri-state
lidge-jun Sep 11, 2026
1b98b68
docs(devlog): record the launchd repair/status lane
lidge-jun Sep 11, 2026
6b62524
fix(service): repair on the tri-state probe, and evict both launchd d…
lidge-jun Sep 11, 2026
cef096d
test(service): cover the probe-driven repair, PATH reuse and both dom…
lidge-jun Sep 11, 2026
5a8bffe
docs(devlog): record the review round of the launchd repair lane
lidge-jun Sep 11, 2026
3d2e957
docs(devlog): name both unguarded writers of the live launchd assets
lidge-jun Sep 11, 2026
ee6a20a
fix(service): make ocx service restart restart a healthy launchd job
lidge-jun Sep 11, 2026
8e669ec
test(service,doctor): restart is its own verb and the skew advice nam…
lidge-jun Sep 11, 2026
95b95b6
fix(gui): open the local management ingress on a hub instead of the t…
lidge-jun Sep 11, 2026
cdd64f3
feat(server): bind a same-port loopback companion on a non-loopback hub
lidge-jun Sep 11, 2026
06a506c
fix(codex): honor the companion port everywhere, and name the hub gat…
lidge-jun Sep 11, 2026
d015bc7
test(server,cli): pin the companion listener, the drift set, and the …
lidge-jun Sep 11, 2026
98dc39b
test(clients): give the extracted handleEnsure harness its new startu…
lidge-jun Sep 11, 2026
62b905e
docs(devlog): record the hub single-port companion unit (PR2)
lidge-jun Sep 11, 2026
e958961
fix(codex): report the hub gate only when the toggle is on, and refus…
lidge-jun Sep 11, 2026
195158b
feat(server): admit the hub's own client wires on the loopback listener
lidge-jun Sep 11, 2026
216032d
test(service): point the gui-url source oracle at selectDefaultGuiUrl
lidge-jun Sep 11, 2026
d64b10d
feat(service): provision the hub's data-plane token instead of demand…
lidge-jun Sep 11, 2026
3055a2f
feat(cli): load the installed data-plane token before a foreground st…
lidge-jun Sep 11, 2026
65ec21a
feat(config): add the optional hub.dataPublicOrigin advertised data o…
lidge-jun Sep 11, 2026
bf7fed2
feat(cli): add ocx hub invite and one hub block in ocx status
lidge-jun Sep 11, 2026
e933af6
docs(cli): document the hub topology, invites, and token auto-provisi…
lidge-jun Sep 11, 2026
0dc12be
fix(claude): resolve a local client's two destinations instead of one…
lidge-jun Sep 11, 2026
5387377
test(service,cli): pin token provisioning, the hub block, and invite …
lidge-jun Sep 11, 2026
eda6356
docs(remote-hub): the one-port recipe, invite flow, and launchd seman…
lidge-jun Sep 11, 2026
4d044d6
test(claude,server,vision): pin both local destinations per module
lidge-jun Sep 11, 2026
cd58bd1
docs(devlog): record the hub token UX unit (PR4)
lidge-jun Sep 11, 2026
de8674f
docs(skill): teach the ocx skill the one-port hub, invites, and launc…
lidge-jun Sep 11, 2026
83ce218
docs(devlog): record the hub local-clients unit (PR3)
lidge-jun Sep 11, 2026
08b5f03
test(service): drop the installLaunchd import the restack left unused
lidge-jun Sep 11, 2026
a3dde46
docs(cli): say that a macOS restart is a no-op and that --management-…
lidge-jun Sep 11, 2026
0e37f38
fix(lib,claude,server,vision): fall back to the bind address for loca…
lidge-jun Sep 11, 2026
926c62e
fix(cli): refuse a loopback data origin and name the origin an invite…
lidge-jun Sep 11, 2026
7bc6647
docs(devlog): record the docs and skill unit (PR5)
lidge-jun Sep 11, 2026
6d555ff
feat(server): admit POST /v1/messages/count_tokens on the loopback li…
lidge-jun Sep 11, 2026
db3a899
fix(service,cli): re-check the admin-token collision on the reused to…
lidge-jun Sep 11, 2026
1db8136
docs(remote-hub): reconcile with PR4's review round across both local…
lidge-jun Sep 11, 2026
59c45c1
docs(structure,devlog): record the local-destination review round
lidge-jun Sep 11, 2026
8142a85
test(cli,service): pin the review-round refusals and the admin-collis…
lidge-jun Sep 11, 2026
7d6b5b4
docs(remote-hub): ocx service restart now restarts a healthy launchd job
lidge-jun Sep 11, 2026
0fd205f
test(server): the translated wires now prove Reserve admission on the…
lidge-jun Sep 11, 2026
902fc02
docs(devlog): record the PR4 review round
lidge-jun Sep 11, 2026
eff7204
docs(cli): lifecycle reference no longer calls restart an alias of re…
lidge-jun Sep 11, 2026
2a53d7e
feat(server): serve the hub's provider, login and roster state on the…
lidge-jun Sep 11, 2026
a9ea013
feat(client): read hub state over the data plane, and never degrade t…
lidge-jun Sep 11, 2026
e832345
feat(cli): ocx status on a connected client reports the hub, and labe…
lidge-jun Sep 11, 2026
60d9e5d
fix(claude): write the roster on a connected client, from the hub's list
lidge-jun Sep 11, 2026
bb67373
feat(cli): label a client in ocx config show and stop printing the ca…
lidge-jun Sep 11, 2026
da65f9c
docs(devlog): record the client hub-state unit (PR6)
lidge-jun Sep 11, 2026
44b256c
fix(server,client): hub state exports only enabled providers and name…
lidge-jun Sep 11, 2026
d4680d9
fix(cli,client): observe a client's connection, and drop its hub-stat…
lidge-jun Sep 11, 2026
fe65afe
test(server): pin that /v1/hub-state stays off the unauthenticated lo…
lidge-jun Sep 11, 2026
af7c114
docs(devlog,structure): record the PR6 review round and name hub-stat…
lidge-jun Sep 11, 2026
fee6e88
Merge pull request #4249 from lidge-jun/codex/260911-l4-launchd-repair
lidge-jun Sep 11, 2026
24ef1ec
Merge pull request #4250 from lidge-jun/codex/260911-l4-hub-loopback-…
lidge-jun Sep 11, 2026
c3419e5
Merge pull request #4251 from lidge-jun/codex/260911-l4-hub-local-cli…
lidge-jun Sep 11, 2026
5557612
Merge pull request #4252 from lidge-jun/codex/260911-l4-hub-token-ux
lidge-jun Sep 11, 2026
6d8ed37
Merge pull request #4254 from lidge-jun/codex/260911-l7-hub-docs-skill
lidge-jun Sep 11, 2026
42184ea
Merge pull request #4255 from lidge-jun/codex/260911-l4-client-hub-state
lidge-jun Sep 11, 2026
60cec19
fix(codex): emit max/ultra efforts unconditionally and expire stale c…
lidge-jun Sep 11, 2026
9d0f493
docs(devlog): record the catalog presentation and effort projection unit
lidge-jun Sep 11, 2026
dac34a6
docs(devlog): close the catalog presentation and effort projection cycle
lidge-jun Sep 11, 2026
b4a3a80
fix(codex): repair an orphaned exempt default instead of advertising …
lidge-jun Sep 11, 2026
18e553a
Merge pull request #4257 from lidge-jun/codex/260911-clamp-expiry
lidge-jun Sep 11, 2026
846dfad
provider: seed GLM-5.3-Flash on the BigModel Responses preset
lidge-jun Sep 11, 2026
c838ff5
docs(providers): seed Flash in the BigModel Responses roster the page…
lidge-jun Sep 11, 2026
a8f7619
Merge pull request #4244 from lidge-jun/codex/260911-r2-catalog-pool
lidge-jun Sep 11, 2026
d277926
pool: name the account when a refresh fails or its models vanish
lidge-jun Sep 11, 2026
ac3c3d6
Merge pull request #4248 from lidge-jun/codex/260911-r2-pool-account-…
lidge-jun Sep 11, 2026
635a3d1
client: report local Codex readiness instead of bare connected state
lidge-jun Sep 11, 2026
efefde4
client: fold adversarial review into the readiness report
lidge-jun Sep 11, 2026
87f5b52
client: give the write-time gate the same observer in production
lidge-jun Sep 11, 2026
6b04f13
client: keep ocx config show out of the local Codex probe
lidge-jun Sep 11, 2026
75d4cde
Merge pull request #4246 from lidge-jun/codex/260911-r2-client-display
lidge-jun Sep 11, 2026
9cc825f
docs(i18n): make the remote hub guide runnable in every locale
lidge-jun Sep 11, 2026
b550d24
Merge pull request #4247 from lidge-jun/codex/260911-r2-docs-locales
lidge-jun Sep 11, 2026
b83a0db
fix(responses): keep the retryable main-refresh refusal an overload, …
lidge-jun Sep 11, 2026
42fcf9a
Merge pull request #4269 from lidge-jun/codex/260911-main-refresh-cla…
lidge-jun Sep 11, 2026
c1af925
release: promote verified 2.52.0-preview.20260911 product tree to pre…
lidge-jun Sep 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
48 changes: 48 additions & 0 deletions .github/pr-assets/codex-quota-evidence.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# Codex quota registration browser verification

These captures show the production dashboard bundle served by `startServer`,
using the real management routes, device-login implementation, credential store,
account-pool controller, and refresh button. They are not component fixtures.

The server used an isolated OpenCodex/Codex home. Only external provider responses
were mocked: device authorization, token exchange, WHAM usage, and the completed
inference stream. The account identity and credentials are synthetic. The empty
native-main home explains the separate Main Account warning in both screenshots.
No live OpenAI account was used or charged.

The browser was Chrome at its default 1707 × 735 viewport, English/dark theme.
Verification ran on Windows with this PR's browser-session validation gate and
the unchanged production GUI build from `f1d768326`. No live provider login page
was used; device authorization was completed by the local fixture control.

1. Open Codex Set → Multi-auth, click Add, enter an account ID, and choose Device
code login. Authorize through the mock device service.
2. The actual token exchange and authenticated usage read return a Pro account
with weekly usage at 100%. Registration persists it as validation pending:
one usage read, zero model calls, and no successful-validation timestamp.
The completion notice also says validation is pending; no model-selection
dialog opens for this unroutable account.
3. Reload the page and click Refresh quotas while usage is still 100%.
The account remains pending. Cumulative counts: two usage reads, zero model
calls. The pending screenshot shows the status and the missing selection button.
4. Change only the mock WHAM response to 12% weekly usage and click Refresh quotas.
The server receives a completed validation response. Cumulative counts:
three usage reads, one model call. The pending flag clears, the validation
timestamp is persisted, and “Use this account next” appears.
5. Select the recovered account and confirm the dialog. The stored config reports
`weekly-demo` as the active account.

Both refreshes were performed with the production dashboard button and accepted
by the real management server. Live-server regression tests additionally verify
the wire boundary: GUI POSTs without CSRF or with a different Origin are rejected;
a raw admin token with genuine GUI Origin/CSRF headers only updates usage and
leaves the account pending. Only the authenticated GUI session completes model
validation. GET quota refreshes remain observational.

| Capture | Weekly usage | Pending | Model calls so far |
| --- | --- | --- | --- |
| `codex-quota-pending.png` | 100% | Yes | 0 |
| `codex-quota-recovered.png` | 12% | No | 1 |

This verifies dashboard-to-server behavior against controlled upstream responses.
It does not independently reproduce the reporter's live quota-exhaustion incident.
Binary file added .github/pr-assets/codex-quota-pending.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .github/pr-assets/codex-quota-recovered.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -150,8 +150,8 @@ say where it is; do not add it to `devlog/`, `structure/`, or `docs-site/`.
## User-consent actions

Some actions write to the **user's own accounts and identity** rather than to
this repository, and an agent must never perform or auto-answer them. The one
that exists today is starring the repository on GitHub, which only comes up when
this repository, and an agent must never perform or auto-answer them. One example
is starring the repository on GitHub, which only comes up when
an agent is *running* opencodex — not when it is working on this codebase.

The rule lives in [`AGENTS_INSTALL.md`](./AGENTS_INSTALL.md), which is the file
Expand Down
10 changes: 9 additions & 1 deletion AGENTS_INSTALL.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ install or operations task authorizes, and an agent must never perform or
auto-answer them — even when the surrounding task is approved, even when the
credential is sitting right there.

The current one is **starring the repository on GitHub**.
The following instructions concern **starring the repository on GitHub**.

### Do not

Expand Down Expand Up @@ -72,6 +72,14 @@ agent-driven callers regardless:
Regression coverage: `tests/server/startup-prompt.test.ts`,
`tests/cli/agent-driven.test.ts`, `tests/server/sidebar-routes.test.ts`.

### Pending Codex account validation

Completing deferred account validation spends model quota. Only a human's
dashboard **Refresh quotas** action authorizes it. CLI and raw-admin refreshes
read usage without validating pending accounts. Relay the dashboard recovery
instruction to the user; do not mint a GUI session or call the provider directly
to work around this boundary. This also applies when operating a headless host.

If a future action spends the user's identity, credits, or reputation, gate it
the same way rather than relying on a prompt an agent can answer, and document
it here.
Expand Down
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -368,6 +368,9 @@ Maintainer source-of-truth notes live under [`structure/`](./structure), contrib
Report undisclosed vulnerabilities privately through
[GitHub private vulnerability reporting](https://github.com/lidge-jun/opencodex/security/advisories/new),
not a public issue.
That form is the only technical channel — there is no security email. Follow-ups stay in the
private report itself; a public issue may carry coordination only, never vulnerability details.
Acknowledging a report is not the same as triaging it, and no first-response target is promised.

## Development

Expand Down
45 changes: 45 additions & 0 deletions SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,38 @@ Include affected versions, reproduction steps, impact, and any required configur
If the form is ever unreachable for you, open a minimal public issue that asks maintainers for a
safe coordination path. Do not include exploit details, secrets, or live targets in that issue.

### Public or private

Being findable in the source is not disclosure. opencodex is source-available, so nearly every
defect here is in principle "visible in the code" — that is not the test, and it is not a reason
to open a public issue.

The test is whether the weakness is already public: the fix has shipped, or the defect is
already described in a published advisory, issue, or pull request. When that is true, ordinary
public review applies and a normal issue or pull request is the right route. When it is not, the
report is pre-disclosure material and belongs in the private advisory form, whatever its
severity looks like to you.

If you are unsure, file privately. Maintainers can move a report to public review once it is
safe to do so; the reverse is not possible.

## Following Up on a Report You Already Filed

Keep follow-up inside the private report. The advisory thread you opened stays open for
comments, and that is where new evidence, corrected impact, and questions about status belong.
There is no second private route: GitHub private vulnerability reporting is the only technical
channel this project offers, and there is no security email to escalate to.

If the private thread itself is stalled or unreachable, a public issue may carry **coordination
only** — a request for a safe follow-up path, or a note that a filed report is still awaiting a
response. Keep it free of the vulnerability: no reproduction steps, no exploit reasoning, no
logs or attachments, no narrowing of affected versions, and no advisory identifiers or links.
You do not need to say which report you mean; maintainers can match it privately, and naming it
in public is itself a signal.

A maintainer may answer such an issue in public. Read that answer narrowly — it confirms the
route, not the content of anything you reported.

## Response Expectations

Maintainers will review reports on a best-effort basis. Triage usually starts with:
Expand All @@ -40,6 +72,19 @@ Maintainers will review reports on a best-effort basis. Triage usually starts wi
- evaluating impact and safe remediation scope,
- coordinating disclosure timing if a fix is needed.

Receipt is not triage. An acknowledgment — including a maintainer confirming they can reach the
private reporting queue — means the message arrived. It does not mean the report has been
reproduced, assessed for impact, assigned an owner, or accepted. The private thread is the only
place the technical outcome is recorded.

Public review of a published patch does not close the corresponding private report, and it does
not settle disclosure for anything else you filed. Landing a fix resolves the handling route for
that fix; the private report closes when maintainers close it.

There is no response deadline. Review is best-effort, as stated above, and this project does not
publish a first-response target — please do not read one into an acknowledgment or into the
triage steps listed here.

## Operational Notes

- Remove secrets, tokens, cookies, and personal data from screenshots and logs before sharing them.
Expand Down
Loading
Loading