Skip to content

fix(codex): accept Codex 0.150 multi-agent events - #8346

Merged
t3dotgg merged 3 commits into
mainfrom
t3code/investigate-codex-0150-breakage
Aug 27, 2026
Merged

fix(codex): accept Codex 0.150 multi-agent events#8346
t3dotgg merged 3 commits into
mainfrom
t3code/investigate-codex-0150-breakage

Conversation

@t3dotgg

@t3dotggt3dotgg commented Aug 27, 2026

Copy link
Copy Markdown
Member

Codex 0.150 added multi-agent values that our pinned app-server schema does not accept. A persisted subAgentActivity with kind: "completed" blocks thread/resume, while matching live events and new collaboration tool values get dropped during decoding.

This adds the 0.150 multi-agent enum values to every generated response namespace and keeps the compatibility definitions in the generator. It avoids a full protocol refresh, which would pull unrelated changes and can break older Codex releases. This complements #8342, which makes thread opening tolerant of future history drift but deliberately leaves live event decoding unchanged.

Tests:

  • vp test run packages/effect-codex-app-server/src/schema.test.ts packages/effect-codex-app-server/src/client.test.ts packages/effect-codex-app-server/src/protocol.test.ts
  • vp run --filter effect-codex-app-server typecheck
  • Isolated provider probe with Codex 0.150.0 and an empty temporary CODEX_HOME

Made with GPT-5.6 Sol through the Codex harness in T3 Code.


Note

Medium Risk
Changes protocol decoding across many generated schemas; incorrect overrides could accept invalid payloads or mask upstream schema drift until the next full refresh.

Overview
Codex 0.150 emits multi-agent collaboration enums that the pinned protocol schema still rejects, which can break thread/resume on persisted history and drop live collabAgentToolCall / subAgentActivity events during decode.

This PR adds a Codex0150DefinitionSchemas override in generate.ts so generation substitutes wider enums for CollabAgentTool, CollabAgentToolCallStatus, and SubAgentActivityKind before the usual rewrite pipeline. Regenerated schema.gen.ts carries those values through every response namespace (extra tools sendMessage, followupTask, interruptAgent, listAgents; status interrupted; activity kind completed).

schema.test.ts asserts the generated Effect schemas accept the new literals and a sample V2ThreadResumeResponse with followupTask / interrupted, without a full protocol refresh.

Reviewed by Cursor Bugbot for commit 7be1453. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Add Codex 0.150 multi-agent event values to schema generation

  • Introduces Codex0150DefinitionSchemas in generate.ts to override parsed definitions for CollabAgentTool, CollabAgentToolCallStatus, and SubAgentActivityKind with hard-coded enum schemas.
  • The generateFiles generator substitutes these definitions before normalization and reference rewriting, producing updated generated code in schema.gen.ts.
  • New enum members: sendMessage, followupTask, interruptAgent, listAgents for CollabAgentTool; interrupted for CollabAgentToolCallStatus; completed for SubAgentActivityKind.
  • Adds a test in schema.test.ts validating the new values across affected schemas and a V2ThreadResumeResponse instance.

Macroscope summarized 7be1453.

@coderabbitai

coderabbitaiBot commented Aug 27, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: be9cdc9a-b59f-43dd-92ef-6a55aaa55050

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 27, 2026
Comment threadpackages/effect-codex-app-server/scripts/generate.ts
@github-actions

github-actionsBot commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ProviderMetricMain baselineThis PRImpactPR ceiling
CodexTotal thread wire13.3 KiB13.3 KiB+6 B (+0.0%)15.1 KiB
CodexThread snapshot wire6.9 KiB6.9 KiB+2 B (+0.0%)7.3 KiB
CodexLive turn WebSocket wire6.4 KiB6.4 KiB+4 B (+0.1%)7.8 KiB
CodexLive turn WebSocket decoded55.6 KiB55.6 KiB0 B (0.0%)66.4 KiB
CodexLive turn messages11110 (0.0%)21
ClaudeTotal thread wire13.3 KiB13.3 KiB−6 B (−0.0%)15.1 KiB
ClaudeThread snapshot wire6.9 KiB6.9 KiB+8 B (+0.1%)7.3 KiB
ClaudeLive turn WebSocket wire6.5 KiB6.4 KiB−14 B (−0.2%)7.8 KiB
ClaudeLive turn WebSocket decoded56.4 KiB56.4 KiB0 B (0.0%)66.4 KiB
ClaudeLive turn messages11110 (0.0%)21

Baseline: 33b650a · PR result: 7be1453 · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 109.4 KiB
  • Claude decoded thread snapshot: 110.1 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Want fixes drafted automatically? Bugbot Autofix can create code changes for findings. A team admin can enable Autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 06b1a89. Configure here.

Comment threadpackages/effect-codex-app-server/scripts/generate.ts
@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). and removed size:L 100-499 changed lines (additions + deletions). labels Aug 27, 2026
@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at 7be1453

Macroscope's review found this PR approvable — This is a narrow Codex 0.150 compatibility fix that adds new multi-agent enum values to existing generated schemas without changing workflows or prior accepted values. The generated changes are mechanical and the new behavior is covered by focused protocol tests.

Notes:

  • No code objects were reviewed. Approvability was decided on eligibility alone.

You can add or adjust custom eligibility rules. Learn more.

@t3dotgg
t3dotgg merged commit f925d63 into mainAug 27, 2026
26 checks passed
@t3dotgg
t3dotgg deleted the t3code/investigate-codex-0150-breakage branch August 27, 2026 05:04
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 27, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
frankdavidcorona pushed a commit to frankdavidcorona/t3code that referenced this pull request Aug 27, 2026
github-actionsBot added a commit to omarcresp/t3code-flake that referenced this pull request Aug 27, 2026
## What's Changed
* fix(desktop): let Clerk UI receive stable auth fixes by @t3dotgg in pingdotgg/t3code#8248
* fix(app): un-settled threads return to the top of the list by @t3dotgg in pingdotgg/t3code#8231
* perf(ci): cut about a minute from every release by @t3dotgg in pingdotgg/t3code#8250
* feat(ci): download macOS preview DMGs without signing in by @t3dotgg in pingdotgg/t3code#8243
* fix(codex): accept Codex 0.150 multi-agent events by @t3dotgg in pingdotgg/t3code#8346
**Full Changelog**: pingdotgg/t3code@v0.0.34...v0.0.35
Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.35
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 27, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
samuelsaid2003 added a commit to samuelsaid2003/t3code that referenced this pull request Aug 27, 2026
Bring in pingdotgg#8346 so Codex threads with 0.150 sub-agent history can resume, plus current upstream main. Keep Samuel identity, SuperGrok remaining meter, and durable thread/cursor storage.
# Conflicts:
#	apps/server/src/provider/Layers/GrokProvider.ts
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 28, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 28, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 29, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 29, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
aaditagrawal added a commit to aaditagrawal/t3code that referenced this pull request Aug 29, 2026
* fix(desktop): let Clerk UI receive stable auth fixes (pingdotgg#8248)
* fix(app): un-settled threads return to the top of the list (pingdotgg#8231)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(ci): cut about a minute from every release (pingdotgg#8250)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(ci): download macOS preview DMGs without signing in (pingdotgg#8243)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(codex): accept Codex 0.150 multi-agent events (pingdotgg#8346)
* chore(release): prepare v0.0.35
---------
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
imsherrill pushed a commit to comprehensiveio/t3code that referenced this pull request Aug 30, 2026
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 31, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XL500-999 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@t3dotgg
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
fix(codex): accept Codex 0.150 multi-agent events by t3dotgg · Pull Request #8346 · pingdotgg/t3code · GitHub
Skip to content

fix(codex): accept Codex 0.150 multi-agent events - #8346

Merged
t3dotgg merged 3 commits into
mainfrom
t3code/investigate-codex-0150-breakage
Aug 27, 2026
Merged

fix(codex): accept Codex 0.150 multi-agent events#8346
t3dotgg merged 3 commits into
mainfrom
t3code/investigate-codex-0150-breakage

Conversation

@t3dotgg

@t3dotggt3dotgg commented Aug 27, 2026

Copy link
Copy Markdown
Member

Codex 0.150 added multi-agent values that our pinned app-server schema does not accept. A persisted subAgentActivity with kind: "completed" blocks thread/resume, while matching live events and new collaboration tool values get dropped during decoding.

This adds the 0.150 multi-agent enum values to every generated response namespace and keeps the compatibility definitions in the generator. It avoids a full protocol refresh, which would pull unrelated changes and can break older Codex releases. This complements #8342, which makes thread opening tolerant of future history drift but deliberately leaves live event decoding unchanged.

Tests:

  • vp test run packages/effect-codex-app-server/src/schema.test.ts packages/effect-codex-app-server/src/client.test.ts packages/effect-codex-app-server/src/protocol.test.ts
  • vp run --filter effect-codex-app-server typecheck
  • Isolated provider probe with Codex 0.150.0 and an empty temporary CODEX_HOME

Made with GPT-5.6 Sol through the Codex harness in T3 Code.


Note

Medium Risk
Changes protocol decoding across many generated schemas; incorrect overrides could accept invalid payloads or mask upstream schema drift until the next full refresh.

Overview
Codex 0.150 emits multi-agent collaboration enums that the pinned protocol schema still rejects, which can break thread/resume on persisted history and drop live collabAgentToolCall / subAgentActivity events during decode.

This PR adds a Codex0150DefinitionSchemas override in generate.ts so generation substitutes wider enums for CollabAgentTool, CollabAgentToolCallStatus, and SubAgentActivityKind before the usual rewrite pipeline. Regenerated schema.gen.ts carries those values through every response namespace (extra tools sendMessage, followupTask, interruptAgent, listAgents; status interrupted; activity kind completed).

schema.test.ts asserts the generated Effect schemas accept the new literals and a sample V2ThreadResumeResponse with followupTask / interrupted, without a full protocol refresh.

Reviewed by Cursor Bugbot for commit 7be1453. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Add Codex 0.150 multi-agent event values to schema generation

  • Introduces Codex0150DefinitionSchemas in generate.ts to override parsed definitions for CollabAgentTool, CollabAgentToolCallStatus, and SubAgentActivityKind with hard-coded enum schemas.
  • The generateFiles generator substitutes these definitions before normalization and reference rewriting, producing updated generated code in schema.gen.ts.
  • New enum members: sendMessage, followupTask, interruptAgent, listAgents for CollabAgentTool; interrupted for CollabAgentToolCallStatus; completed for SubAgentActivityKind.
  • Adds a test in schema.test.ts validating the new values across affected schemas and a V2ThreadResumeResponse instance.

Macroscope summarized 7be1453.

@coderabbitai

coderabbitaiBot commented Aug 27, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: be9cdc9a-b59f-43dd-92ef-6a55aaa55050

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 27, 2026
Comment threadpackages/effect-codex-app-server/scripts/generate.ts
@github-actions

github-actionsBot commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ProviderMetricMain baselineThis PRImpactPR ceiling
CodexTotal thread wire13.3 KiB13.3 KiB+6 B (+0.0%)15.1 KiB
CodexThread snapshot wire6.9 KiB6.9 KiB+2 B (+0.0%)7.3 KiB
CodexLive turn WebSocket wire6.4 KiB6.4 KiB+4 B (+0.1%)7.8 KiB
CodexLive turn WebSocket decoded55.6 KiB55.6 KiB0 B (0.0%)66.4 KiB
CodexLive turn messages11110 (0.0%)21
ClaudeTotal thread wire13.3 KiB13.3 KiB−6 B (−0.0%)15.1 KiB
ClaudeThread snapshot wire6.9 KiB6.9 KiB+8 B (+0.1%)7.3 KiB
ClaudeLive turn WebSocket wire6.5 KiB6.4 KiB−14 B (−0.2%)7.8 KiB
ClaudeLive turn WebSocket decoded56.4 KiB56.4 KiB0 B (0.0%)66.4 KiB
ClaudeLive turn messages11110 (0.0%)21

Baseline: 33b650a · PR result: 7be1453 · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 109.4 KiB
  • Claude decoded thread snapshot: 110.1 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Want fixes drafted automatically? Bugbot Autofix can create code changes for findings. A team admin can enable Autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 06b1a89. Configure here.

Comment threadpackages/effect-codex-app-server/scripts/generate.ts
@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). and removed size:L 100-499 changed lines (additions + deletions). labels Aug 27, 2026
@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at 7be1453

Macroscope's review found this PR approvable — This is a narrow Codex 0.150 compatibility fix that adds new multi-agent enum values to existing generated schemas without changing workflows or prior accepted values. The generated changes are mechanical and the new behavior is covered by focused protocol tests.

Notes:

  • No code objects were reviewed. Approvability was decided on eligibility alone.

You can add or adjust custom eligibility rules. Learn more.

@t3dotgg
t3dotgg merged commit f925d63 into mainAug 27, 2026
26 checks passed
@t3dotgg
t3dotgg deleted the t3code/investigate-codex-0150-breakage branch August 27, 2026 05:04
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 27, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
frankdavidcorona pushed a commit to frankdavidcorona/t3code that referenced this pull request Aug 27, 2026
github-actionsBot added a commit to omarcresp/t3code-flake that referenced this pull request Aug 27, 2026
## What's Changed
* fix(desktop): let Clerk UI receive stable auth fixes by @t3dotgg in pingdotgg/t3code#8248
* fix(app): un-settled threads return to the top of the list by @t3dotgg in pingdotgg/t3code#8231
* perf(ci): cut about a minute from every release by @t3dotgg in pingdotgg/t3code#8250
* feat(ci): download macOS preview DMGs without signing in by @t3dotgg in pingdotgg/t3code#8243
* fix(codex): accept Codex 0.150 multi-agent events by @t3dotgg in pingdotgg/t3code#8346
**Full Changelog**: pingdotgg/t3code@v0.0.34...v0.0.35
Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.35
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 27, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
samuelsaid2003 added a commit to samuelsaid2003/t3code that referenced this pull request Aug 27, 2026
Bring in pingdotgg#8346 so Codex threads with 0.150 sub-agent history can resume, plus current upstream main. Keep Samuel identity, SuperGrok remaining meter, and durable thread/cursor storage.
# Conflicts:
#	apps/server/src/provider/Layers/GrokProvider.ts
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 28, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 28, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 29, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 29, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
aaditagrawal added a commit to aaditagrawal/t3code that referenced this pull request Aug 29, 2026
* fix(desktop): let Clerk UI receive stable auth fixes (pingdotgg#8248)
* fix(app): un-settled threads return to the top of the list (pingdotgg#8231)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(ci): cut about a minute from every release (pingdotgg#8250)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(ci): download macOS preview DMGs without signing in (pingdotgg#8243)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(codex): accept Codex 0.150 multi-agent events (pingdotgg#8346)
* chore(release): prepare v0.0.35
---------
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
imsherrill pushed a commit to comprehensiveio/t3code that referenced this pull request Aug 30, 2026
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 31, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XL500-999 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@t3dotgg
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' fix(codex): accept Codex 0.150 multi-agent events by t3dotgg · Pull Request #8346 · pingdotgg/t3code · GitHub
Skip to content

fix(codex): accept Codex 0.150 multi-agent events - #8346

Merged
t3dotgg merged 3 commits into
mainfrom
t3code/investigate-codex-0150-breakage
Aug 27, 2026
Merged

fix(codex): accept Codex 0.150 multi-agent events#8346
t3dotgg merged 3 commits into
mainfrom
t3code/investigate-codex-0150-breakage

Conversation

@t3dotgg

@t3dotggt3dotgg commented Aug 27, 2026

Copy link
Copy Markdown
Member

Codex 0.150 added multi-agent values that our pinned app-server schema does not accept. A persisted subAgentActivity with kind: "completed" blocks thread/resume, while matching live events and new collaboration tool values get dropped during decoding.

This adds the 0.150 multi-agent enum values to every generated response namespace and keeps the compatibility definitions in the generator. It avoids a full protocol refresh, which would pull unrelated changes and can break older Codex releases. This complements #8342, which makes thread opening tolerant of future history drift but deliberately leaves live event decoding unchanged.

Tests:

  • vp test run packages/effect-codex-app-server/src/schema.test.ts packages/effect-codex-app-server/src/client.test.ts packages/effect-codex-app-server/src/protocol.test.ts
  • vp run --filter effect-codex-app-server typecheck
  • Isolated provider probe with Codex 0.150.0 and an empty temporary CODEX_HOME

Made with GPT-5.6 Sol through the Codex harness in T3 Code.


Note

Medium Risk
Changes protocol decoding across many generated schemas; incorrect overrides could accept invalid payloads or mask upstream schema drift until the next full refresh.

Overview
Codex 0.150 emits multi-agent collaboration enums that the pinned protocol schema still rejects, which can break thread/resume on persisted history and drop live collabAgentToolCall / subAgentActivity events during decode.

This PR adds a Codex0150DefinitionSchemas override in generate.ts so generation substitutes wider enums for CollabAgentTool, CollabAgentToolCallStatus, and SubAgentActivityKind before the usual rewrite pipeline. Regenerated schema.gen.ts carries those values through every response namespace (extra tools sendMessage, followupTask, interruptAgent, listAgents; status interrupted; activity kind completed).

schema.test.ts asserts the generated Effect schemas accept the new literals and a sample V2ThreadResumeResponse with followupTask / interrupted, without a full protocol refresh.

Reviewed by Cursor Bugbot for commit 7be1453. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Add Codex 0.150 multi-agent event values to schema generation

  • Introduces Codex0150DefinitionSchemas in generate.ts to override parsed definitions for CollabAgentTool, CollabAgentToolCallStatus, and SubAgentActivityKind with hard-coded enum schemas.
  • The generateFiles generator substitutes these definitions before normalization and reference rewriting, producing updated generated code in schema.gen.ts.
  • New enum members: sendMessage, followupTask, interruptAgent, listAgents for CollabAgentTool; interrupted for CollabAgentToolCallStatus; completed for SubAgentActivityKind.
  • Adds a test in schema.test.ts validating the new values across affected schemas and a V2ThreadResumeResponse instance.

Macroscope summarized 7be1453.

@coderabbitai

coderabbitaiBot commented Aug 27, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: be9cdc9a-b59f-43dd-92ef-6a55aaa55050

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 27, 2026
Comment threadpackages/effect-codex-app-server/scripts/generate.ts
@github-actions

github-actionsBot commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ProviderMetricMain baselineThis PRImpactPR ceiling
CodexTotal thread wire13.3 KiB13.3 KiB+6 B (+0.0%)15.1 KiB
CodexThread snapshot wire6.9 KiB6.9 KiB+2 B (+0.0%)7.3 KiB
CodexLive turn WebSocket wire6.4 KiB6.4 KiB+4 B (+0.1%)7.8 KiB
CodexLive turn WebSocket decoded55.6 KiB55.6 KiB0 B (0.0%)66.4 KiB
CodexLive turn messages11110 (0.0%)21
ClaudeTotal thread wire13.3 KiB13.3 KiB−6 B (−0.0%)15.1 KiB
ClaudeThread snapshot wire6.9 KiB6.9 KiB+8 B (+0.1%)7.3 KiB
ClaudeLive turn WebSocket wire6.5 KiB6.4 KiB−14 B (−0.2%)7.8 KiB
ClaudeLive turn WebSocket decoded56.4 KiB56.4 KiB0 B (0.0%)66.4 KiB
ClaudeLive turn messages11110 (0.0%)21

Baseline: 33b650a · PR result: 7be1453 · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 109.4 KiB
  • Claude decoded thread snapshot: 110.1 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Want fixes drafted automatically? Bugbot Autofix can create code changes for findings. A team admin can enable Autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 06b1a89. Configure here.

Comment threadpackages/effect-codex-app-server/scripts/generate.ts
@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). and removed size:L 100-499 changed lines (additions + deletions). labels Aug 27, 2026
@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at 7be1453

Macroscope's review found this PR approvable — This is a narrow Codex 0.150 compatibility fix that adds new multi-agent enum values to existing generated schemas without changing workflows or prior accepted values. The generated changes are mechanical and the new behavior is covered by focused protocol tests.

Notes:

  • No code objects were reviewed. Approvability was decided on eligibility alone.

You can add or adjust custom eligibility rules. Learn more.

@t3dotgg
t3dotgg merged commit f925d63 into mainAug 27, 2026
26 checks passed
@t3dotgg
t3dotgg deleted the t3code/investigate-codex-0150-breakage branch August 27, 2026 05:04
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 27, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
frankdavidcorona pushed a commit to frankdavidcorona/t3code that referenced this pull request Aug 27, 2026
github-actionsBot added a commit to omarcresp/t3code-flake that referenced this pull request Aug 27, 2026
## What's Changed
* fix(desktop): let Clerk UI receive stable auth fixes by @t3dotgg in pingdotgg/t3code#8248
* fix(app): un-settled threads return to the top of the list by @t3dotgg in pingdotgg/t3code#8231
* perf(ci): cut about a minute from every release by @t3dotgg in pingdotgg/t3code#8250
* feat(ci): download macOS preview DMGs without signing in by @t3dotgg in pingdotgg/t3code#8243
* fix(codex): accept Codex 0.150 multi-agent events by @t3dotgg in pingdotgg/t3code#8346
**Full Changelog**: pingdotgg/t3code@v0.0.34...v0.0.35
Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.35
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 27, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
samuelsaid2003 added a commit to samuelsaid2003/t3code that referenced this pull request Aug 27, 2026
Bring in pingdotgg#8346 so Codex threads with 0.150 sub-agent history can resume, plus current upstream main. Keep Samuel identity, SuperGrok remaining meter, and durable thread/cursor storage.
# Conflicts:
#	apps/server/src/provider/Layers/GrokProvider.ts
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 28, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 28, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 29, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 29, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
aaditagrawal added a commit to aaditagrawal/t3code that referenced this pull request Aug 29, 2026
* fix(desktop): let Clerk UI receive stable auth fixes (pingdotgg#8248)
* fix(app): un-settled threads return to the top of the list (pingdotgg#8231)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(ci): cut about a minute from every release (pingdotgg#8250)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(ci): download macOS preview DMGs without signing in (pingdotgg#8243)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(codex): accept Codex 0.150 multi-agent events (pingdotgg#8346)
* chore(release): prepare v0.0.35
---------
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
imsherrill pushed a commit to comprehensiveio/t3code that referenced this pull request Aug 30, 2026
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 31, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XL500-999 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@t3dotgg
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' fix(codex): accept Codex 0.150 multi-agent events by t3dotgg · Pull Request #8346 · pingdotgg/t3code · GitHub
Skip to content

fix(codex): accept Codex 0.150 multi-agent events - #8346

Merged
t3dotgg merged 3 commits into
mainfrom
t3code/investigate-codex-0150-breakage
Aug 27, 2026
Merged

fix(codex): accept Codex 0.150 multi-agent events#8346
t3dotgg merged 3 commits into
mainfrom
t3code/investigate-codex-0150-breakage

Conversation

@t3dotgg

@t3dotggt3dotgg commented Aug 27, 2026

Copy link
Copy Markdown
Member

Codex 0.150 added multi-agent values that our pinned app-server schema does not accept. A persisted subAgentActivity with kind: "completed" blocks thread/resume, while matching live events and new collaboration tool values get dropped during decoding.

This adds the 0.150 multi-agent enum values to every generated response namespace and keeps the compatibility definitions in the generator. It avoids a full protocol refresh, which would pull unrelated changes and can break older Codex releases. This complements #8342, which makes thread opening tolerant of future history drift but deliberately leaves live event decoding unchanged.

Tests:

  • vp test run packages/effect-codex-app-server/src/schema.test.ts packages/effect-codex-app-server/src/client.test.ts packages/effect-codex-app-server/src/protocol.test.ts
  • vp run --filter effect-codex-app-server typecheck
  • Isolated provider probe with Codex 0.150.0 and an empty temporary CODEX_HOME

Made with GPT-5.6 Sol through the Codex harness in T3 Code.


Note

Medium Risk
Changes protocol decoding across many generated schemas; incorrect overrides could accept invalid payloads or mask upstream schema drift until the next full refresh.

Overview
Codex 0.150 emits multi-agent collaboration enums that the pinned protocol schema still rejects, which can break thread/resume on persisted history and drop live collabAgentToolCall / subAgentActivity events during decode.

This PR adds a Codex0150DefinitionSchemas override in generate.ts so generation substitutes wider enums for CollabAgentTool, CollabAgentToolCallStatus, and SubAgentActivityKind before the usual rewrite pipeline. Regenerated schema.gen.ts carries those values through every response namespace (extra tools sendMessage, followupTask, interruptAgent, listAgents; status interrupted; activity kind completed).

schema.test.ts asserts the generated Effect schemas accept the new literals and a sample V2ThreadResumeResponse with followupTask / interrupted, without a full protocol refresh.

Reviewed by Cursor Bugbot for commit 7be1453. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Add Codex 0.150 multi-agent event values to schema generation

  • Introduces Codex0150DefinitionSchemas in generate.ts to override parsed definitions for CollabAgentTool, CollabAgentToolCallStatus, and SubAgentActivityKind with hard-coded enum schemas.
  • The generateFiles generator substitutes these definitions before normalization and reference rewriting, producing updated generated code in schema.gen.ts.
  • New enum members: sendMessage, followupTask, interruptAgent, listAgents for CollabAgentTool; interrupted for CollabAgentToolCallStatus; completed for SubAgentActivityKind.
  • Adds a test in schema.test.ts validating the new values across affected schemas and a V2ThreadResumeResponse instance.

Macroscope summarized 7be1453.

@coderabbitai

coderabbitaiBot commented Aug 27, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: be9cdc9a-b59f-43dd-92ef-6a55aaa55050

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 27, 2026
Comment threadpackages/effect-codex-app-server/scripts/generate.ts
@github-actions

github-actionsBot commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ProviderMetricMain baselineThis PRImpactPR ceiling
CodexTotal thread wire13.3 KiB13.3 KiB+6 B (+0.0%)15.1 KiB
CodexThread snapshot wire6.9 KiB6.9 KiB+2 B (+0.0%)7.3 KiB
CodexLive turn WebSocket wire6.4 KiB6.4 KiB+4 B (+0.1%)7.8 KiB
CodexLive turn WebSocket decoded55.6 KiB55.6 KiB0 B (0.0%)66.4 KiB
CodexLive turn messages11110 (0.0%)21
ClaudeTotal thread wire13.3 KiB13.3 KiB−6 B (−0.0%)15.1 KiB
ClaudeThread snapshot wire6.9 KiB6.9 KiB+8 B (+0.1%)7.3 KiB
ClaudeLive turn WebSocket wire6.5 KiB6.4 KiB−14 B (−0.2%)7.8 KiB
ClaudeLive turn WebSocket decoded56.4 KiB56.4 KiB0 B (0.0%)66.4 KiB
ClaudeLive turn messages11110 (0.0%)21

Baseline: 33b650a · PR result: 7be1453 · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 109.4 KiB
  • Claude decoded thread snapshot: 110.1 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Want fixes drafted automatically? Bugbot Autofix can create code changes for findings. A team admin can enable Autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 06b1a89. Configure here.

Comment threadpackages/effect-codex-app-server/scripts/generate.ts
@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). and removed size:L 100-499 changed lines (additions + deletions). labels Aug 27, 2026
@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at 7be1453

Macroscope's review found this PR approvable — This is a narrow Codex 0.150 compatibility fix that adds new multi-agent enum values to existing generated schemas without changing workflows or prior accepted values. The generated changes are mechanical and the new behavior is covered by focused protocol tests.

Notes:

  • No code objects were reviewed. Approvability was decided on eligibility alone.

You can add or adjust custom eligibility rules. Learn more.

@t3dotgg
t3dotgg merged commit f925d63 into mainAug 27, 2026
26 checks passed
@t3dotgg
t3dotgg deleted the t3code/investigate-codex-0150-breakage branch August 27, 2026 05:04
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 27, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
frankdavidcorona pushed a commit to frankdavidcorona/t3code that referenced this pull request Aug 27, 2026
github-actionsBot added a commit to omarcresp/t3code-flake that referenced this pull request Aug 27, 2026
## What's Changed
* fix(desktop): let Clerk UI receive stable auth fixes by @t3dotgg in pingdotgg/t3code#8248
* fix(app): un-settled threads return to the top of the list by @t3dotgg in pingdotgg/t3code#8231
* perf(ci): cut about a minute from every release by @t3dotgg in pingdotgg/t3code#8250
* feat(ci): download macOS preview DMGs without signing in by @t3dotgg in pingdotgg/t3code#8243
* fix(codex): accept Codex 0.150 multi-agent events by @t3dotgg in pingdotgg/t3code#8346
**Full Changelog**: pingdotgg/t3code@v0.0.34...v0.0.35
Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.35
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 27, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
samuelsaid2003 added a commit to samuelsaid2003/t3code that referenced this pull request Aug 27, 2026
Bring in pingdotgg#8346 so Codex threads with 0.150 sub-agent history can resume, plus current upstream main. Keep Samuel identity, SuperGrok remaining meter, and durable thread/cursor storage.
# Conflicts:
#	apps/server/src/provider/Layers/GrokProvider.ts
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 28, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 28, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 29, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 29, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
aaditagrawal added a commit to aaditagrawal/t3code that referenced this pull request Aug 29, 2026
* fix(desktop): let Clerk UI receive stable auth fixes (pingdotgg#8248)
* fix(app): un-settled threads return to the top of the list (pingdotgg#8231)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(ci): cut about a minute from every release (pingdotgg#8250)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(ci): download macOS preview DMGs without signing in (pingdotgg#8243)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(codex): accept Codex 0.150 multi-agent events (pingdotgg#8346)
* chore(release): prepare v0.0.35
---------
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
imsherrill pushed a commit to comprehensiveio/t3code that referenced this pull request Aug 30, 2026
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 31, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XL500-999 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@t3dotgg
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' fix(codex): accept Codex 0.150 multi-agent events by t3dotgg · Pull Request #8346 · pingdotgg/t3code · GitHub
Skip to content

fix(codex): accept Codex 0.150 multi-agent events - #8346

Merged
t3dotgg merged 3 commits into
mainfrom
t3code/investigate-codex-0150-breakage
Aug 27, 2026
Merged

fix(codex): accept Codex 0.150 multi-agent events#8346
t3dotgg merged 3 commits into
mainfrom
t3code/investigate-codex-0150-breakage

Conversation

@t3dotgg

@t3dotggt3dotgg commented Aug 27, 2026

Copy link
Copy Markdown
Member

Codex 0.150 added multi-agent values that our pinned app-server schema does not accept. A persisted subAgentActivity with kind: "completed" blocks thread/resume, while matching live events and new collaboration tool values get dropped during decoding.

This adds the 0.150 multi-agent enum values to every generated response namespace and keeps the compatibility definitions in the generator. It avoids a full protocol refresh, which would pull unrelated changes and can break older Codex releases. This complements #8342, which makes thread opening tolerant of future history drift but deliberately leaves live event decoding unchanged.

Tests:

  • vp test run packages/effect-codex-app-server/src/schema.test.ts packages/effect-codex-app-server/src/client.test.ts packages/effect-codex-app-server/src/protocol.test.ts
  • vp run --filter effect-codex-app-server typecheck
  • Isolated provider probe with Codex 0.150.0 and an empty temporary CODEX_HOME

Made with GPT-5.6 Sol through the Codex harness in T3 Code.


Note

Medium Risk
Changes protocol decoding across many generated schemas; incorrect overrides could accept invalid payloads or mask upstream schema drift until the next full refresh.

Overview
Codex 0.150 emits multi-agent collaboration enums that the pinned protocol schema still rejects, which can break thread/resume on persisted history and drop live collabAgentToolCall / subAgentActivity events during decode.

This PR adds a Codex0150DefinitionSchemas override in generate.ts so generation substitutes wider enums for CollabAgentTool, CollabAgentToolCallStatus, and SubAgentActivityKind before the usual rewrite pipeline. Regenerated schema.gen.ts carries those values through every response namespace (extra tools sendMessage, followupTask, interruptAgent, listAgents; status interrupted; activity kind completed).

schema.test.ts asserts the generated Effect schemas accept the new literals and a sample V2ThreadResumeResponse with followupTask / interrupted, without a full protocol refresh.

Reviewed by Cursor Bugbot for commit 7be1453. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Add Codex 0.150 multi-agent event values to schema generation

  • Introduces Codex0150DefinitionSchemas in generate.ts to override parsed definitions for CollabAgentTool, CollabAgentToolCallStatus, and SubAgentActivityKind with hard-coded enum schemas.
  • The generateFiles generator substitutes these definitions before normalization and reference rewriting, producing updated generated code in schema.gen.ts.
  • New enum members: sendMessage, followupTask, interruptAgent, listAgents for CollabAgentTool; interrupted for CollabAgentToolCallStatus; completed for SubAgentActivityKind.
  • Adds a test in schema.test.ts validating the new values across affected schemas and a V2ThreadResumeResponse instance.

Macroscope summarized 7be1453.

@coderabbitai

coderabbitaiBot commented Aug 27, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: be9cdc9a-b59f-43dd-92ef-6a55aaa55050

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 27, 2026
Comment threadpackages/effect-codex-app-server/scripts/generate.ts
@github-actions

github-actionsBot commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ProviderMetricMain baselineThis PRImpactPR ceiling
CodexTotal thread wire13.3 KiB13.3 KiB+6 B (+0.0%)15.1 KiB
CodexThread snapshot wire6.9 KiB6.9 KiB+2 B (+0.0%)7.3 KiB
CodexLive turn WebSocket wire6.4 KiB6.4 KiB+4 B (+0.1%)7.8 KiB
CodexLive turn WebSocket decoded55.6 KiB55.6 KiB0 B (0.0%)66.4 KiB
CodexLive turn messages11110 (0.0%)21
ClaudeTotal thread wire13.3 KiB13.3 KiB−6 B (−0.0%)15.1 KiB
ClaudeThread snapshot wire6.9 KiB6.9 KiB+8 B (+0.1%)7.3 KiB
ClaudeLive turn WebSocket wire6.5 KiB6.4 KiB−14 B (−0.2%)7.8 KiB
ClaudeLive turn WebSocket decoded56.4 KiB56.4 KiB0 B (0.0%)66.4 KiB
ClaudeLive turn messages11110 (0.0%)21

Baseline: 33b650a · PR result: 7be1453 · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 109.4 KiB
  • Claude decoded thread snapshot: 110.1 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Want fixes drafted automatically? Bugbot Autofix can create code changes for findings. A team admin can enable Autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 06b1a89. Configure here.

Comment threadpackages/effect-codex-app-server/scripts/generate.ts
@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). and removed size:L 100-499 changed lines (additions + deletions). labels Aug 27, 2026
@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at 7be1453

Macroscope's review found this PR approvable — This is a narrow Codex 0.150 compatibility fix that adds new multi-agent enum values to existing generated schemas without changing workflows or prior accepted values. The generated changes are mechanical and the new behavior is covered by focused protocol tests.

Notes:

  • No code objects were reviewed. Approvability was decided on eligibility alone.

You can add or adjust custom eligibility rules. Learn more.

@t3dotgg
t3dotgg merged commit f925d63 into mainAug 27, 2026
26 checks passed
@t3dotgg
t3dotgg deleted the t3code/investigate-codex-0150-breakage branch August 27, 2026 05:04
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 27, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
frankdavidcorona pushed a commit to frankdavidcorona/t3code that referenced this pull request Aug 27, 2026
github-actionsBot added a commit to omarcresp/t3code-flake that referenced this pull request Aug 27, 2026
## What's Changed
* fix(desktop): let Clerk UI receive stable auth fixes by @t3dotgg in pingdotgg/t3code#8248
* fix(app): un-settled threads return to the top of the list by @t3dotgg in pingdotgg/t3code#8231
* perf(ci): cut about a minute from every release by @t3dotgg in pingdotgg/t3code#8250
* feat(ci): download macOS preview DMGs without signing in by @t3dotgg in pingdotgg/t3code#8243
* fix(codex): accept Codex 0.150 multi-agent events by @t3dotgg in pingdotgg/t3code#8346
**Full Changelog**: pingdotgg/t3code@v0.0.34...v0.0.35
Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.35
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 27, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
samuelsaid2003 added a commit to samuelsaid2003/t3code that referenced this pull request Aug 27, 2026
Bring in pingdotgg#8346 so Codex threads with 0.150 sub-agent history can resume, plus current upstream main. Keep Samuel identity, SuperGrok remaining meter, and durable thread/cursor storage.
# Conflicts:
#	apps/server/src/provider/Layers/GrokProvider.ts
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 28, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 28, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 29, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 29, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
aaditagrawal added a commit to aaditagrawal/t3code that referenced this pull request Aug 29, 2026
* fix(desktop): let Clerk UI receive stable auth fixes (pingdotgg#8248)
* fix(app): un-settled threads return to the top of the list (pingdotgg#8231)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(ci): cut about a minute from every release (pingdotgg#8250)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(ci): download macOS preview DMGs without signing in (pingdotgg#8243)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(codex): accept Codex 0.150 multi-agent events (pingdotgg#8346)
* chore(release): prepare v0.0.35
---------
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
imsherrill pushed a commit to comprehensiveio/t3code that referenced this pull request Aug 30, 2026
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 31, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XL500-999 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@t3dotgg
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' fix(codex): accept Codex 0.150 multi-agent events by t3dotgg · Pull Request #8346 · pingdotgg/t3code · GitHub
Skip to content

fix(codex): accept Codex 0.150 multi-agent events - #8346

Merged
t3dotgg merged 3 commits into
mainfrom
t3code/investigate-codex-0150-breakage
Aug 27, 2026
Merged

fix(codex): accept Codex 0.150 multi-agent events#8346
t3dotgg merged 3 commits into
mainfrom
t3code/investigate-codex-0150-breakage

Conversation

@t3dotgg

@t3dotggt3dotgg commented Aug 27, 2026

Copy link
Copy Markdown
Member

Codex 0.150 added multi-agent values that our pinned app-server schema does not accept. A persisted subAgentActivity with kind: "completed" blocks thread/resume, while matching live events and new collaboration tool values get dropped during decoding.

This adds the 0.150 multi-agent enum values to every generated response namespace and keeps the compatibility definitions in the generator. It avoids a full protocol refresh, which would pull unrelated changes and can break older Codex releases. This complements #8342, which makes thread opening tolerant of future history drift but deliberately leaves live event decoding unchanged.

Tests:

  • vp test run packages/effect-codex-app-server/src/schema.test.ts packages/effect-codex-app-server/src/client.test.ts packages/effect-codex-app-server/src/protocol.test.ts
  • vp run --filter effect-codex-app-server typecheck
  • Isolated provider probe with Codex 0.150.0 and an empty temporary CODEX_HOME

Made with GPT-5.6 Sol through the Codex harness in T3 Code.


Note

Medium Risk
Changes protocol decoding across many generated schemas; incorrect overrides could accept invalid payloads or mask upstream schema drift until the next full refresh.

Overview
Codex 0.150 emits multi-agent collaboration enums that the pinned protocol schema still rejects, which can break thread/resume on persisted history and drop live collabAgentToolCall / subAgentActivity events during decode.

This PR adds a Codex0150DefinitionSchemas override in generate.ts so generation substitutes wider enums for CollabAgentTool, CollabAgentToolCallStatus, and SubAgentActivityKind before the usual rewrite pipeline. Regenerated schema.gen.ts carries those values through every response namespace (extra tools sendMessage, followupTask, interruptAgent, listAgents; status interrupted; activity kind completed).

schema.test.ts asserts the generated Effect schemas accept the new literals and a sample V2ThreadResumeResponse with followupTask / interrupted, without a full protocol refresh.

Reviewed by Cursor Bugbot for commit 7be1453. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Add Codex 0.150 multi-agent event values to schema generation

  • Introduces Codex0150DefinitionSchemas in generate.ts to override parsed definitions for CollabAgentTool, CollabAgentToolCallStatus, and SubAgentActivityKind with hard-coded enum schemas.
  • The generateFiles generator substitutes these definitions before normalization and reference rewriting, producing updated generated code in schema.gen.ts.
  • New enum members: sendMessage, followupTask, interruptAgent, listAgents for CollabAgentTool; interrupted for CollabAgentToolCallStatus; completed for SubAgentActivityKind.
  • Adds a test in schema.test.ts validating the new values across affected schemas and a V2ThreadResumeResponse instance.

Macroscope summarized 7be1453.

@coderabbitai

coderabbitaiBot commented Aug 27, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: be9cdc9a-b59f-43dd-92ef-6a55aaa55050

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 27, 2026
Comment threadpackages/effect-codex-app-server/scripts/generate.ts
@github-actions

github-actionsBot commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ProviderMetricMain baselineThis PRImpactPR ceiling
CodexTotal thread wire13.3 KiB13.3 KiB+6 B (+0.0%)15.1 KiB
CodexThread snapshot wire6.9 KiB6.9 KiB+2 B (+0.0%)7.3 KiB
CodexLive turn WebSocket wire6.4 KiB6.4 KiB+4 B (+0.1%)7.8 KiB
CodexLive turn WebSocket decoded55.6 KiB55.6 KiB0 B (0.0%)66.4 KiB
CodexLive turn messages11110 (0.0%)21
ClaudeTotal thread wire13.3 KiB13.3 KiB−6 B (−0.0%)15.1 KiB
ClaudeThread snapshot wire6.9 KiB6.9 KiB+8 B (+0.1%)7.3 KiB
ClaudeLive turn WebSocket wire6.5 KiB6.4 KiB−14 B (−0.2%)7.8 KiB
ClaudeLive turn WebSocket decoded56.4 KiB56.4 KiB0 B (0.0%)66.4 KiB
ClaudeLive turn messages11110 (0.0%)21

Baseline: 33b650a · PR result: 7be1453 · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 109.4 KiB
  • Claude decoded thread snapshot: 110.1 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Want fixes drafted automatically? Bugbot Autofix can create code changes for findings. A team admin can enable Autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 06b1a89. Configure here.

Comment threadpackages/effect-codex-app-server/scripts/generate.ts
@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). and removed size:L 100-499 changed lines (additions + deletions). labels Aug 27, 2026
@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at 7be1453

Macroscope's review found this PR approvable — This is a narrow Codex 0.150 compatibility fix that adds new multi-agent enum values to existing generated schemas without changing workflows or prior accepted values. The generated changes are mechanical and the new behavior is covered by focused protocol tests.

Notes:

  • No code objects were reviewed. Approvability was decided on eligibility alone.

You can add or adjust custom eligibility rules. Learn more.

@t3dotgg
t3dotgg merged commit f925d63 into mainAug 27, 2026
26 checks passed
@t3dotgg
t3dotgg deleted the t3code/investigate-codex-0150-breakage branch August 27, 2026 05:04
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 27, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
frankdavidcorona pushed a commit to frankdavidcorona/t3code that referenced this pull request Aug 27, 2026
github-actionsBot added a commit to omarcresp/t3code-flake that referenced this pull request Aug 27, 2026
## What's Changed
* fix(desktop): let Clerk UI receive stable auth fixes by @t3dotgg in pingdotgg/t3code#8248
* fix(app): un-settled threads return to the top of the list by @t3dotgg in pingdotgg/t3code#8231
* perf(ci): cut about a minute from every release by @t3dotgg in pingdotgg/t3code#8250
* feat(ci): download macOS preview DMGs without signing in by @t3dotgg in pingdotgg/t3code#8243
* fix(codex): accept Codex 0.150 multi-agent events by @t3dotgg in pingdotgg/t3code#8346
**Full Changelog**: pingdotgg/t3code@v0.0.34...v0.0.35
Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.35
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 27, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
samuelsaid2003 added a commit to samuelsaid2003/t3code that referenced this pull request Aug 27, 2026
Bring in pingdotgg#8346 so Codex threads with 0.150 sub-agent history can resume, plus current upstream main. Keep Samuel identity, SuperGrok remaining meter, and durable thread/cursor storage.
# Conflicts:
#	apps/server/src/provider/Layers/GrokProvider.ts
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 28, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 28, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 29, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 29, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
aaditagrawal added a commit to aaditagrawal/t3code that referenced this pull request Aug 29, 2026
* fix(desktop): let Clerk UI receive stable auth fixes (pingdotgg#8248)
* fix(app): un-settled threads return to the top of the list (pingdotgg#8231)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(ci): cut about a minute from every release (pingdotgg#8250)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(ci): download macOS preview DMGs without signing in (pingdotgg#8243)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(codex): accept Codex 0.150 multi-agent events (pingdotgg#8346)
* chore(release): prepare v0.0.35
---------
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
imsherrill pushed a commit to comprehensiveio/t3code that referenced this pull request Aug 30, 2026
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 31, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XL500-999 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@t3dotgg
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' fix(codex): accept Codex 0.150 multi-agent events by t3dotgg · Pull Request #8346 · pingdotgg/t3code · GitHub
Skip to content

fix(codex): accept Codex 0.150 multi-agent events - #8346

Merged
t3dotgg merged 3 commits into
mainfrom
t3code/investigate-codex-0150-breakage
Aug 27, 2026
Merged

fix(codex): accept Codex 0.150 multi-agent events#8346
t3dotgg merged 3 commits into
mainfrom
t3code/investigate-codex-0150-breakage

Conversation

@t3dotgg

@t3dotggt3dotgg commented Aug 27, 2026

Copy link
Copy Markdown
Member

Codex 0.150 added multi-agent values that our pinned app-server schema does not accept. A persisted subAgentActivity with kind: "completed" blocks thread/resume, while matching live events and new collaboration tool values get dropped during decoding.

This adds the 0.150 multi-agent enum values to every generated response namespace and keeps the compatibility definitions in the generator. It avoids a full protocol refresh, which would pull unrelated changes and can break older Codex releases. This complements #8342, which makes thread opening tolerant of future history drift but deliberately leaves live event decoding unchanged.

Tests:

  • vp test run packages/effect-codex-app-server/src/schema.test.ts packages/effect-codex-app-server/src/client.test.ts packages/effect-codex-app-server/src/protocol.test.ts
  • vp run --filter effect-codex-app-server typecheck
  • Isolated provider probe with Codex 0.150.0 and an empty temporary CODEX_HOME

Made with GPT-5.6 Sol through the Codex harness in T3 Code.


Note

Medium Risk
Changes protocol decoding across many generated schemas; incorrect overrides could accept invalid payloads or mask upstream schema drift until the next full refresh.

Overview
Codex 0.150 emits multi-agent collaboration enums that the pinned protocol schema still rejects, which can break thread/resume on persisted history and drop live collabAgentToolCall / subAgentActivity events during decode.

This PR adds a Codex0150DefinitionSchemas override in generate.ts so generation substitutes wider enums for CollabAgentTool, CollabAgentToolCallStatus, and SubAgentActivityKind before the usual rewrite pipeline. Regenerated schema.gen.ts carries those values through every response namespace (extra tools sendMessage, followupTask, interruptAgent, listAgents; status interrupted; activity kind completed).

schema.test.ts asserts the generated Effect schemas accept the new literals and a sample V2ThreadResumeResponse with followupTask / interrupted, without a full protocol refresh.

Reviewed by Cursor Bugbot for commit 7be1453. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Add Codex 0.150 multi-agent event values to schema generation

  • Introduces Codex0150DefinitionSchemas in generate.ts to override parsed definitions for CollabAgentTool, CollabAgentToolCallStatus, and SubAgentActivityKind with hard-coded enum schemas.
  • The generateFiles generator substitutes these definitions before normalization and reference rewriting, producing updated generated code in schema.gen.ts.
  • New enum members: sendMessage, followupTask, interruptAgent, listAgents for CollabAgentTool; interrupted for CollabAgentToolCallStatus; completed for SubAgentActivityKind.
  • Adds a test in schema.test.ts validating the new values across affected schemas and a V2ThreadResumeResponse instance.

Macroscope summarized 7be1453.

@coderabbitai

coderabbitaiBot commented Aug 27, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: be9cdc9a-b59f-43dd-92ef-6a55aaa55050

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 27, 2026
Comment threadpackages/effect-codex-app-server/scripts/generate.ts
@github-actions

github-actionsBot commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ProviderMetricMain baselineThis PRImpactPR ceiling
CodexTotal thread wire13.3 KiB13.3 KiB+6 B (+0.0%)15.1 KiB
CodexThread snapshot wire6.9 KiB6.9 KiB+2 B (+0.0%)7.3 KiB
CodexLive turn WebSocket wire6.4 KiB6.4 KiB+4 B (+0.1%)7.8 KiB
CodexLive turn WebSocket decoded55.6 KiB55.6 KiB0 B (0.0%)66.4 KiB
CodexLive turn messages11110 (0.0%)21
ClaudeTotal thread wire13.3 KiB13.3 KiB−6 B (−0.0%)15.1 KiB
ClaudeThread snapshot wire6.9 KiB6.9 KiB+8 B (+0.1%)7.3 KiB
ClaudeLive turn WebSocket wire6.5 KiB6.4 KiB−14 B (−0.2%)7.8 KiB
ClaudeLive turn WebSocket decoded56.4 KiB56.4 KiB0 B (0.0%)66.4 KiB
ClaudeLive turn messages11110 (0.0%)21

Baseline: 33b650a · PR result: 7be1453 · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 109.4 KiB
  • Claude decoded thread snapshot: 110.1 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Want fixes drafted automatically? Bugbot Autofix can create code changes for findings. A team admin can enable Autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 06b1a89. Configure here.

Comment threadpackages/effect-codex-app-server/scripts/generate.ts
@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). and removed size:L 100-499 changed lines (additions + deletions). labels Aug 27, 2026
@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at 7be1453

Macroscope's review found this PR approvable — This is a narrow Codex 0.150 compatibility fix that adds new multi-agent enum values to existing generated schemas without changing workflows or prior accepted values. The generated changes are mechanical and the new behavior is covered by focused protocol tests.

Notes:

  • No code objects were reviewed. Approvability was decided on eligibility alone.

You can add or adjust custom eligibility rules. Learn more.

@t3dotgg
t3dotgg merged commit f925d63 into mainAug 27, 2026
26 checks passed
@t3dotgg
t3dotgg deleted the t3code/investigate-codex-0150-breakage branch August 27, 2026 05:04
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 27, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
frankdavidcorona pushed a commit to frankdavidcorona/t3code that referenced this pull request Aug 27, 2026
github-actionsBot added a commit to omarcresp/t3code-flake that referenced this pull request Aug 27, 2026
## What's Changed
* fix(desktop): let Clerk UI receive stable auth fixes by @t3dotgg in pingdotgg/t3code#8248
* fix(app): un-settled threads return to the top of the list by @t3dotgg in pingdotgg/t3code#8231
* perf(ci): cut about a minute from every release by @t3dotgg in pingdotgg/t3code#8250
* feat(ci): download macOS preview DMGs without signing in by @t3dotgg in pingdotgg/t3code#8243
* fix(codex): accept Codex 0.150 multi-agent events by @t3dotgg in pingdotgg/t3code#8346
**Full Changelog**: pingdotgg/t3code@v0.0.34...v0.0.35
Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.35
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 27, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
samuelsaid2003 added a commit to samuelsaid2003/t3code that referenced this pull request Aug 27, 2026
Bring in pingdotgg#8346 so Codex threads with 0.150 sub-agent history can resume, plus current upstream main. Keep Samuel identity, SuperGrok remaining meter, and durable thread/cursor storage.
# Conflicts:
#	apps/server/src/provider/Layers/GrokProvider.ts
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 28, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 28, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 29, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 29, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
aaditagrawal added a commit to aaditagrawal/t3code that referenced this pull request Aug 29, 2026
* fix(desktop): let Clerk UI receive stable auth fixes (pingdotgg#8248)
* fix(app): un-settled threads return to the top of the list (pingdotgg#8231)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(ci): cut about a minute from every release (pingdotgg#8250)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(ci): download macOS preview DMGs without signing in (pingdotgg#8243)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(codex): accept Codex 0.150 multi-agent events (pingdotgg#8346)
* chore(release): prepare v0.0.35
---------
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
imsherrill pushed a commit to comprehensiveio/t3code that referenced this pull request Aug 30, 2026
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 31, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XL500-999 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@t3dotgg
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); fix(codex): accept Codex 0.150 multi-agent events by t3dotgg · Pull Request #8346 · pingdotgg/t3code · GitHub
Skip to content

fix(codex): accept Codex 0.150 multi-agent events - #8346

Merged
t3dotgg merged 3 commits into
mainfrom
t3code/investigate-codex-0150-breakage
Aug 27, 2026
Merged

fix(codex): accept Codex 0.150 multi-agent events#8346
t3dotgg merged 3 commits into
mainfrom
t3code/investigate-codex-0150-breakage

Conversation

@t3dotgg

@t3dotggt3dotgg commented Aug 27, 2026

Copy link
Copy Markdown
Member

Codex 0.150 added multi-agent values that our pinned app-server schema does not accept. A persisted subAgentActivity with kind: "completed" blocks thread/resume, while matching live events and new collaboration tool values get dropped during decoding.

This adds the 0.150 multi-agent enum values to every generated response namespace and keeps the compatibility definitions in the generator. It avoids a full protocol refresh, which would pull unrelated changes and can break older Codex releases. This complements #8342, which makes thread opening tolerant of future history drift but deliberately leaves live event decoding unchanged.

Tests:

  • vp test run packages/effect-codex-app-server/src/schema.test.ts packages/effect-codex-app-server/src/client.test.ts packages/effect-codex-app-server/src/protocol.test.ts
  • vp run --filter effect-codex-app-server typecheck
  • Isolated provider probe with Codex 0.150.0 and an empty temporary CODEX_HOME

Made with GPT-5.6 Sol through the Codex harness in T3 Code.


Note

Medium Risk
Changes protocol decoding across many generated schemas; incorrect overrides could accept invalid payloads or mask upstream schema drift until the next full refresh.

Overview
Codex 0.150 emits multi-agent collaboration enums that the pinned protocol schema still rejects, which can break thread/resume on persisted history and drop live collabAgentToolCall / subAgentActivity events during decode.

This PR adds a Codex0150DefinitionSchemas override in generate.ts so generation substitutes wider enums for CollabAgentTool, CollabAgentToolCallStatus, and SubAgentActivityKind before the usual rewrite pipeline. Regenerated schema.gen.ts carries those values through every response namespace (extra tools sendMessage, followupTask, interruptAgent, listAgents; status interrupted; activity kind completed).

schema.test.ts asserts the generated Effect schemas accept the new literals and a sample V2ThreadResumeResponse with followupTask / interrupted, without a full protocol refresh.

Reviewed by Cursor Bugbot for commit 7be1453. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Add Codex 0.150 multi-agent event values to schema generation

  • Introduces Codex0150DefinitionSchemas in generate.ts to override parsed definitions for CollabAgentTool, CollabAgentToolCallStatus, and SubAgentActivityKind with hard-coded enum schemas.
  • The generateFiles generator substitutes these definitions before normalization and reference rewriting, producing updated generated code in schema.gen.ts.
  • New enum members: sendMessage, followupTask, interruptAgent, listAgents for CollabAgentTool; interrupted for CollabAgentToolCallStatus; completed for SubAgentActivityKind.
  • Adds a test in schema.test.ts validating the new values across affected schemas and a V2ThreadResumeResponse instance.

Macroscope summarized 7be1453.

@coderabbitai

coderabbitaiBot commented Aug 27, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: be9cdc9a-b59f-43dd-92ef-6a55aaa55050

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 27, 2026
Comment threadpackages/effect-codex-app-server/scripts/generate.ts
@github-actions

github-actionsBot commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ProviderMetricMain baselineThis PRImpactPR ceiling
CodexTotal thread wire13.3 KiB13.3 KiB+6 B (+0.0%)15.1 KiB
CodexThread snapshot wire6.9 KiB6.9 KiB+2 B (+0.0%)7.3 KiB
CodexLive turn WebSocket wire6.4 KiB6.4 KiB+4 B (+0.1%)7.8 KiB
CodexLive turn WebSocket decoded55.6 KiB55.6 KiB0 B (0.0%)66.4 KiB
CodexLive turn messages11110 (0.0%)21
ClaudeTotal thread wire13.3 KiB13.3 KiB−6 B (−0.0%)15.1 KiB
ClaudeThread snapshot wire6.9 KiB6.9 KiB+8 B (+0.1%)7.3 KiB
ClaudeLive turn WebSocket wire6.5 KiB6.4 KiB−14 B (−0.2%)7.8 KiB
ClaudeLive turn WebSocket decoded56.4 KiB56.4 KiB0 B (0.0%)66.4 KiB
ClaudeLive turn messages11110 (0.0%)21

Baseline: 33b650a · PR result: 7be1453 · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 109.4 KiB
  • Claude decoded thread snapshot: 110.1 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Want fixes drafted automatically? Bugbot Autofix can create code changes for findings. A team admin can enable Autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 06b1a89. Configure here.

Comment threadpackages/effect-codex-app-server/scripts/generate.ts
@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). and removed size:L 100-499 changed lines (additions + deletions). labels Aug 27, 2026
@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at 7be1453

Macroscope's review found this PR approvable — This is a narrow Codex 0.150 compatibility fix that adds new multi-agent enum values to existing generated schemas without changing workflows or prior accepted values. The generated changes are mechanical and the new behavior is covered by focused protocol tests.

Notes:

  • No code objects were reviewed. Approvability was decided on eligibility alone.

You can add or adjust custom eligibility rules. Learn more.

@t3dotgg
t3dotgg merged commit f925d63 into mainAug 27, 2026
26 checks passed
@t3dotgg
t3dotgg deleted the t3code/investigate-codex-0150-breakage branch August 27, 2026 05:04
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 27, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
frankdavidcorona pushed a commit to frankdavidcorona/t3code that referenced this pull request Aug 27, 2026
github-actionsBot added a commit to omarcresp/t3code-flake that referenced this pull request Aug 27, 2026
## What's Changed
* fix(desktop): let Clerk UI receive stable auth fixes by @t3dotgg in pingdotgg/t3code#8248
* fix(app): un-settled threads return to the top of the list by @t3dotgg in pingdotgg/t3code#8231
* perf(ci): cut about a minute from every release by @t3dotgg in pingdotgg/t3code#8250
* feat(ci): download macOS preview DMGs without signing in by @t3dotgg in pingdotgg/t3code#8243
* fix(codex): accept Codex 0.150 multi-agent events by @t3dotgg in pingdotgg/t3code#8346
**Full Changelog**: pingdotgg/t3code@v0.0.34...v0.0.35
Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.35
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 27, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
samuelsaid2003 added a commit to samuelsaid2003/t3code that referenced this pull request Aug 27, 2026
Bring in pingdotgg#8346 so Codex threads with 0.150 sub-agent history can resume, plus current upstream main. Keep Samuel identity, SuperGrok remaining meter, and durable thread/cursor storage.
# Conflicts:
#	apps/server/src/provider/Layers/GrokProvider.ts
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 28, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 28, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 29, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 29, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
aaditagrawal added a commit to aaditagrawal/t3code that referenced this pull request Aug 29, 2026
* fix(desktop): let Clerk UI receive stable auth fixes (pingdotgg#8248)
* fix(app): un-settled threads return to the top of the list (pingdotgg#8231)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* perf(ci): cut about a minute from every release (pingdotgg#8250)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(ci): download macOS preview DMGs without signing in (pingdotgg#8243)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix(codex): accept Codex 0.150 multi-agent events (pingdotgg#8346)
* chore(release): prepare v0.0.35
---------
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
imsherrill pushed a commit to comprehensiveio/t3code that referenced this pull request Aug 30, 2026
D3OXY added a commit to D3OXY/t3code that referenced this pull request Aug 31, 2026
pingdotgg#8346 taught the generated bindings the Codex 0.150 enum values, so
asserting that they reject "completed" no longer tests anything. Point
the fixtures at a kind the bindings do not name instead, which keeps
exercising drift after they catch up with any given release.
Also record the generator's definition overrides alongside the two
drift rules in the providers doc: overrides fix the variants we already
know about, the rules cover the ones we do not.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XL500-999 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@t3dotgg