fix(codex): suppress under-development features warning in chat (#129493)

Codex 0.149 emits a session-configure warning whenever UnderDevelopment-stage
features are enabled, and OpenClaw always enables features.code_mode and
features.apply_patch_streaming_events for native code mode threads. The
warning relays into chat as a SYSTEM card telling operators to edit the
managed codex-home config.toml they should never touch.

Send suppress_unstable_features_warning: true in the same thread-config
block that enables those features. When native code mode is off, OpenClaw
does not send the flag, so warnings for user-enabled under-development
features still surface. The general warning relay is untouched.

Verified live against the pinned @openai/codex 0.149.1 app-server binary:
thread/start without the flag emits the exact warning; with it, none.
This commit is contained in:
Peter Steinberger
2026-08-25 16:38:48 -07:00
committed by GitHub
parent dfe29eda2d
commit 6ad0f79ae4
7 changed files with 19 additions and 0 deletions
@@ -675,6 +675,7 @@ describe("runCodexAppServerSideQuestion", () => {
"features.code_mode": true,
"features.code_mode_only": false,
"features.apply_patch_streaming_events": true,
suppress_unstable_features_warning: true,
"features.standalone_web_search": false,
web_search: "cached",
});
@@ -120,6 +120,7 @@ const DEFAULT_CODEX_RUNTIME_THREAD_CONFIG = {
"features.code_mode": true,
"features.code_mode_only": false,
"features.apply_patch_streaming_events": true,
suppress_unstable_features_warning: true,
"features.standalone_web_search": false,
web_search: "cached",
} as const;
@@ -1500,6 +1500,7 @@ describe("Codex app-server native code mode config", () => {
"features.goals": false,
"tools.update_plan.enabled": false,
"features.apply_patch_streaming_events": true,
suppress_unstable_features_warning: true,
"features.standalone_web_search": false,
web_search: "cached",
});
@@ -1647,6 +1648,7 @@ describe("Codex app-server native code mode config", () => {
"features.goals": false,
"tools.update_plan.enabled": false,
"features.apply_patch_streaming_events": true,
suppress_unstable_features_warning: true,
"features.multi_agent": false,
"features.standalone_web_search": false,
web_search: "cached",
@@ -1777,6 +1779,7 @@ describe("Codex app-server native code mode config", () => {
"features.goals": false,
"tools.update_plan.enabled": false,
"features.apply_patch_streaming_events": true,
suppress_unstable_features_warning: true,
"features.standalone_web_search": false,
web_search: "cached",
});
@@ -1801,6 +1804,7 @@ describe("Codex app-server native code mode config", () => {
"features.goals": false,
"tools.update_plan.enabled": false,
"features.apply_patch_streaming_events": true,
suppress_unstable_features_warning: true,
"features.standalone_web_search": false,
web_search: "cached",
});
@@ -1861,6 +1865,7 @@ describe("Codex app-server native code mode config", () => {
"features.goals": false,
"tools.update_plan.enabled": false,
"features.apply_patch_streaming_events": true,
suppress_unstable_features_warning: true,
"features.standalone_web_search": false,
web_search: "cached",
});
@@ -1941,6 +1946,7 @@ describe("Codex app-server native code mode config", () => {
"features.goals": false,
"tools.update_plan.enabled": false,
"features.apply_patch_streaming_events": true,
suppress_unstable_features_warning: true,
"features.standalone_web_search": false,
web_search: "cached",
});
@@ -1976,6 +1982,7 @@ describe("Codex app-server native code mode config", () => {
"features.goals": false,
"tools.update_plan.enabled": false,
"features.apply_patch_streaming_events": true,
suppress_unstable_features_warning: true,
"features.standalone_web_search": false,
web_search: "cached",
});
@@ -2180,6 +2187,7 @@ describe("Codex app-server turn params", () => {
"features.goals": false,
"tools.update_plan.enabled": false,
"features.apply_patch_streaming_events": true,
suppress_unstable_features_warning: true,
"features.standalone_web_search": false,
web_search: "cached",
},
@@ -36,10 +36,13 @@ import { resolveCodexWebSearchPlan, type CodexNativeWebSearchSupport } from "./w
export const CODEX_RING_ZERO_BASE_INSTRUCTIONS = "";
// Stream structured patch snapshots so large generated edits keep the turn active.
// OpenClaw opts into these under-development features deliberately, so silence
// Codex's chat warning that tells operators to edit the managed codex-home config.
const CODEX_CODE_MODE_THREAD_CONFIG: JsonObject = {
"features.code_mode": true,
"features.code_mode_only": false,
"features.apply_patch_streaming_events": true,
suppress_unstable_features_warning: true,
};
const CODEX_GOAL_CONTINUATION_DISABLED_THREAD_CONFIG: JsonObject = {
@@ -70,6 +70,7 @@
"features.goals": false,
"features.standalone_web_search": false,
"project_doc_max_bytes": 131072,
"suppress_unstable_features_warning": true,
"tools.update_plan.enabled": false,
"web_search": "cached"
},
@@ -114,6 +115,7 @@
"features.goals": false,
"features.standalone_web_search": false,
"project_doc_max_bytes": 131072,
"suppress_unstable_features_warning": true,
"tools.update_plan.enabled": false,
"web_search": "cached"
},
@@ -70,6 +70,7 @@
"features.goals": false,
"features.standalone_web_search": false,
"project_doc_max_bytes": 131072,
"suppress_unstable_features_warning": true,
"tools.update_plan.enabled": false,
"web_search": "cached"
},
@@ -114,6 +115,7 @@
"features.goals": false,
"features.standalone_web_search": false,
"project_doc_max_bytes": 131072,
"suppress_unstable_features_warning": true,
"tools.update_plan.enabled": false,
"web_search": "cached"
},
@@ -70,6 +70,7 @@
"features.goals": false,
"features.standalone_web_search": false,
"project_doc_max_bytes": 131072,
"suppress_unstable_features_warning": true,
"tools.update_plan.enabled": false,
"web_search": "cached"
},
@@ -115,6 +116,7 @@
"features.goals": false,
"features.standalone_web_search": false,
"project_doc_max_bytes": 131072,
"suppress_unstable_features_warning": true,
"tools.update_plan.enabled": false,
"web_search": "cached"
},