Conversation
|
Codex review: needs changes before merge. Reviewed June 1, 2026, 9:49 PM ET / 01:49 UTC. Summary PR surface: Source +823, Tests +1592, Docs +1, Other +67. Total +2483 across 76 files. Reproducibility: yes. Source inspection of the latest PR head shows the Codex side-question path still uses model-unaware dynamic-tool loading, the Responses backfill still skips after prior reasoning content, Google routing still overrides explicit Generative AI API choices under Review metrics: 2 noteworthy metrics.
Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Risk before merge
Maintainer options:
Copy recommended automerge instructionNext step before merge
Security Review findings
Review detailsBest possible solution: Fix the four concrete runtime blockers, keep the new custom OpenAI Responses mode documented as a public compatibility addition, and require maintainer review/upgrade proof for the provider, auth, and session-state behavior before merge. Do we have a high-confidence way to reproduce the issue? Yes. Source inspection of the latest PR head shows the Codex side-question path still uses model-unaware dynamic-tool loading, the Responses backfill still skips after prior reasoning content, Google routing still overrides explicit Generative AI API choices under Is this the best way to solve the issue? No. The PR contains useful fixes and strong selected live proof, but it is not the best complete fix until the one-sided Codex path, completed-output backfill guard, Google transport precedence, and model-reset live-switch behavior are corrected. Full review comments:
Overall correctness: patch is incorrect AGENTS.md: found and applied where relevant. Codex review notes: model gpt-5.5, reasoning high; reviewed against b06dc1753765. Label changesLabel justifications:
Evidence reviewedPR surface: Source +823, Tests +1592, Docs +1, Other +67. Total +2483 across 76 files. View PR surface stats
Acceptance criteria:
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c653fb3f4e
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| }), | ||
| markLiveSwitchPending: true, | ||
| }); | ||
| delete next.liveModelSwitchPending; |
There was a problem hiding this comment.
Keep model resets pending for live switches
When sessions.patch resets model to null while an agent is already running on a user-pinned non-default model, this clears the only flag that shouldSwitchToLiveModel checks before reconciling the active run. The persisted selection changes back to the configured default, but the active runner will not restart/switch because liveModelSwitchPending is deleted here; this contradicts the documented live-switch contract that user-driven sessions.patch model changes mark a pending live switch (docs/concepts/model-failover.md:342).
Useful? React with 👍 / 👎.
|
I ran the missing live Azure credentialed canary on the latest head of this PR. Setup:
No-tools canary: Tool-continuation canary: I also scanned the canary artifacts and session trajectory logs for the prior failure signatures: The scan found no This is live credentialed Azure proof from the PR head that both a direct assistant-text turn and a tool-call continuation produce deliverable assistant text through |
|
Land-ready proof for head Local/source proof:
Live/provider proof:
CI:
Known gap:
|
Summary
Fixes #85806.
Fixes #83810.
Fixes #74305.
Fixes #87381.
Fixes #87740.
Fixes #84688.
Fixes #63685.
Fixes #88039.
Fixes #83192.
Fixes #87768.
Fixes #44870.
Fixes #88456.
Fixes #86808.
Fixes #84804.
Fixes #84697.
Fixes #84109.
Fixes #89008.
Fixes #85918.
Fixes #88833.
Fixes #88918.
Fixes #88439.
Fixes #89242.
Fixes #89241.
Partially addresses #89100 (FM-3 outbound scaffolding leak; FM-2 group target routing remains open).
Verification
node scripts/run-vitest.mjs src/llm/utils/json-parse.test.tsnode scripts/run-vitest.mjs src/agents/openai-transport-stream.test.ts -t "Azure Responses completed"node scripts/run-vitest.mjs src/agents/openai-transport-stream.test.tsnode scripts/run-vitest.mjs src/agents/openai-transport-stream.test.ts -t "DeepSeek DSML"node scripts/run-vitest.mjs src/agents/openai-transport-stream.test.ts -t "tool calls"node scripts/run-vitest.mjs src/agents/openai-transport-stream.test.tsnode scripts/run-oxlint.mjs --tsconfig config/tsconfig/oxlint.core.json src/agents/cli-runner.ts src/agents/cli-runner/types.ts src/agents/cli-runner.reliability.test.tsnode scripts/run-vitest.mjs src/agents/cli-runner.before-agent-reply-cron.test.ts src/agents/cli-runner.context-engine.test.ts src/agents/cli-runner.reliability.test.ts src/auto-reply/reply/get-reply-run.media-only.test.ts src/auto-reply/reply/agent-runner.runreplyagent.e2e.test.tsnode scripts/run-oxlint.mjs --tsconfig config/tsconfig/oxlint.core.json src/agents/openai-transport-stream.ts src/agents/openai-transport-stream.test.tsnode scripts/run-vitest.mjs src/agents/openai-transport-stream.test.ts extensions/microsoft-foundry/index.test.ts src/agents/openai-responses-payload-policy.test.tsnode scripts/run-oxlint.mjs --tsconfig config/tsconfig/oxlint.core.json src/gateway/sessions-patch.ts src/gateway/sessions-patch.test.ts src/commands/onboard-custom.ts src/commands/onboard-custom.test.ts src/agents/provider-transport-fetch.ts src/agents/provider-transport-fetch.test.tsnode scripts/run-vitest.mjs src/gateway/sessions-patch.test.ts src/agents/live-model-switch.test.ts src/commands/onboard-custom.test.ts src/commands/onboard-custom-config.test.ts src/agents/provider-transport-fetch.test.tsnode scripts/run-vitest.mjs src/agents/agent-command.live-model-switch.test.ts src/agents/acp-spawn.test.ts src/agents/google-simple-completion-stream.test.ts src/agents/simple-completion-transport.test.ts src/auto-reply/reply/get-reply-run.media-only.test.ts src/auto-reply/status.test.ts extensions/acpx/src/runtime.test.ts extensions/google/model-id.test.ts extensions/google/provider-models.test.ts packages/model-catalog-core/src/provider-model-id-normalization.test.ts packages/model-catalog-core/src/provider-model-id-normalize.test.ts extensions/codex/src/app-server/dynamic-tool-build.test.ts extensions/codex/src/app-server/thread-lifecycle.binding.test.ts extensions/codex/src/app-server/thread-lifecycle.test.tsnode scripts/run-vitest.mjs extensions/codex/src/app-server/dynamic-tool-build.test.ts extensions/codex/src/app-server/thread-lifecycle.test.ts extensions/codex/src/app-server/thread-lifecycle.binding.test.ts extensions/codex/src/app-server/run-attempt.test.tsnode scripts/run-vitest.mjs src/gateway/sessions-patch.test.ts src/agents/live-model-switch.test.tsnode scripts/run-vitest.mjs src/commands/agent.test.tsnode scripts/run-vitest.mjs src/commands/onboard-custom-config.test.ts src/commands/onboard-custom.test.ts src/commands/onboard-non-interactive/local/auth-choice.test.tsnode scripts/run-vitest.mjs src/commands/configure.gateway-auth.prompt-auth-config.test.ts src/commands/model-picker.test.tsnode scripts/run-vitest.mjs extensions/codex/src/app-server/event-projector.test.ts extensions/codex/src/app-server/run-attempt.test.tsnode scripts/run-vitest.mjs extensions/google/api.test.ts extensions/google/provider-registration.test.ts extensions/google/index.test.ts src/agents/embedded-agent-runner/model.test.tspnpm exec oxfmt --check extensions/codex/src/app-server/event-projector.ts extensions/codex/src/app-server/event-projector.test.tsnode scripts/run-oxlint.mjs --tsconfig config/tsconfig/oxlint.extensions.json extensions/codex/src/app-server/event-projector.ts extensions/codex/src/app-server/event-projector.test.tsnode scripts/run-oxlint.mjs --tsconfig config/tsconfig/oxlint.extensions.json extensions/google/api.ts extensions/google/provider-policy.ts extensions/google/provider-registration.ts extensions/google/api.test.ts extensions/google/provider-registration.test.ts extensions/google/index.test.tsnode scripts/run-oxlint.mjs --tsconfig config/tsconfig/oxlint.core.json src/agents/embedded-agent-runner/model.provider-runtime.test-support.ts src/agents/embedded-agent-runner/model.test.tsnode scripts/run-tsgo.mjs -p tsconfig.extensions.json --incremental falsenode scripts/run-tsgo.mjs -p test/tsconfig/tsconfig.extensions.test.json --incremental falsenode scripts/run-oxlint.mjs --tsconfig config/tsconfig/oxlint.core.json src/commands/configure.gateway-auth.ts src/commands/configure.gateway-auth.prompt-auth-config.test.ts && git diff --checknode scripts/run-tsgo.mjs -p tsconfig.core.json --incremental falsenode scripts/run-tsgo.mjs -p test/tsconfig/tsconfig.core.test.json --incremental falsenode scripts/run-oxlint.mjs --tsconfig config/tsconfig/oxlint.core.json src/agents/agent-command.ts src/commands/agent-command.test-mocks.ts src/commands/agent.test.tsnode scripts/run-oxlint.mjs --tsconfig config/tsconfig/oxlint.core.json src/cli/program/register.onboard.ts src/commands/onboard-custom-config.ts src/commands/onboard-custom.ts src/commands/onboard-types.ts src/wizard/i18n/locales/en.ts src/wizard/i18n/locales/zh-CN.ts src/wizard/i18n/locales/zh-TW.ts src/commands/onboard-custom-config.test.ts src/commands/onboard-custom.test.ts src/commands/onboard-non-interactive/local/auth-choice.test.tspnpm docs:listswift test --package-path apps/macos --filter VoiceWakeForwarderTests --filter TalkModeRuntimeSpeechTests --filter GatewayConnectionControlTests-> Swift Testing selected suites: 12 tests passedisolated live API-key Codex harness: temp HOME/CODEX_HOME, CODEX_API_KEY from exported OPENAI_API_KEY, OPENCLAW_LIVE_CODEX_HARNESS_MODEL=openai/gpt-5.4-nano,
node scripts/test-live.mjs --codex-harness -- src/gateway/gateway-codex-harness.live.test.ts-> 1 passed, 1 skipped, 154.60sgit diff --check origin/main...HEADnode scripts/run-vitest.mjs src/agents/tools/cron-tool.test.tsnode scripts/run-vitest.mjs src/gateway/tool-resolution.exclude.test.ts src/gateway/tool-resolution.test.tsnode scripts/run-vitest.mjs src/agents/tools/sessions-spawn-tool.test.tsnode scripts/run-oxlint.mjs --tsconfig config/tsconfig/oxlint.core.json src/agents/tools/cron-tool-canonicalize.ts src/agents/tools/cron-tool.test.tsnode scripts/run-oxlint.mjs --tsconfig config/tsconfig/oxlint.core.json src/gateway/tool-resolution.ts src/gateway/tool-resolution.exclude.test.ts src/gateway/tool-resolution.test.ts src/agents/tools/sessions-spawn-tool.test.tsnode scripts/run-tsgo.mjs -p tsconfig.core.json --incremental falsegit diff --check/Users/steipete/Projects/agent-scripts/skills/autoreview/scripts/autoreview --mode local-> clean after accepted fixesnode scripts/run-vitest.mjs src/agents/tools/cron-tool.test.tsnode scripts/run-oxlint.mjs --tsconfig config/tsconfig/oxlint.core.json src/agents/tools/cron-tool-canonicalize.ts src/agents/tools/cron-tool.test.tsnode scripts/run-tsgo.mjs -p tsconfig.core.json --incremental falsegit diff --check/Users/steipete/Projects/agent-scripts/skills/autoreview/scripts/autoreview --mode local-> clean after accepted fixesNote: local full extension test-type graph crashed inside typescript-go with a Go SIGSEGV before TypeScript diagnostics; core prod/test typechecks covering the touched files passed.
node scripts/run-vitest.mjs src/agents/tools/message-tool.test.ts src/infra/outbound/message-action-normalization.test.ts src/infra/outbound/message-action-runner.send-validation.test.ts src/auto-reply/reply/strip-inbound-meta.test.tsnode scripts/run-vitest.mjs src/infra/outbound/message-action-runner.core-send.test.tspnpm exec oxfmt --check --threads=1 src/agents/tools/message-tool.ts src/agents/tools/message-tool.test.ts src/auto-reply/reply/strip-inbound-meta.tsnode scripts/run-oxlint.mjs --tsconfig config/tsconfig/oxlint.core.json src/agents/tools/message-tool.ts src/agents/tools/message-tool.test.ts src/auto-reply/reply/strip-inbound-meta.ts src/auto-reply/reply/strip-inbound-meta.test.ts/Users/steipete/Projects/agent-scripts/skills/autoreview/scripts/autoreview --mode local-> clean: no accepted/actionable findings reported