Skip to content

Commit b1222c0

Browse files
committed
fix(codex): use stable hooks feature flag
1 parent be166b9 commit b1222c0

5 files changed

Lines changed: 23 additions & 23 deletions

File tree

extensions/codex/src/app-server/native-hook-relay.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ describe("Codex native hook relay config", () => {
1313
});
1414

1515
expect(config).toEqual({
16-
"features.codex_hooks": true,
16+
"features.hooks": true,
1717
"hooks.PreToolUse": [
1818
{
1919
matcher: null,
@@ -87,7 +87,7 @@ describe("Codex native hook relay config", () => {
8787
events: ["permission_request"],
8888
}),
8989
).toEqual({
90-
"features.codex_hooks": true,
90+
"features.hooks": true,
9191
"hooks.PermissionRequest": [
9292
{
9393
matcher: null,
@@ -118,7 +118,7 @@ describe("Codex native hook relay config", () => {
118118

119119
it("builds deterministic clearing config when the relay is disabled", () => {
120120
expect(buildCodexNativeHookRelayDisabledConfig()).toEqual({
121-
"features.codex_hooks": false,
121+
"features.hooks": false,
122122
"hooks.PreToolUse": [],
123123
"hooks.PostToolUse": [],
124124
"hooks.PermissionRequest": [],

extensions/codex/src/app-server/native-hook-relay.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ export function buildCodexNativeHookRelayConfig(params: {
2727
}): JsonObject {
2828
const events = params.events?.length ? params.events : CODEX_NATIVE_HOOK_RELAY_EVENTS;
2929
const config: JsonObject = {
30-
"features.codex_hooks": true,
30+
"features.hooks": true,
3131
};
3232
for (const event of events) {
3333
const codexEvent = CODEX_HOOK_EVENT_BY_NATIVE_EVENT[event];
@@ -51,7 +51,7 @@ export function buildCodexNativeHookRelayConfig(params: {
5151

5252
export function buildCodexNativeHookRelayDisabledConfig(): JsonObject {
5353
return {
54-
"features.codex_hooks": false,
54+
"features.hooks": false,
5555
"hooks.PreToolUse": [],
5656
"hooks.PostToolUse": [],
5757
"hooks.PermissionRequest": [],

extensions/codex/src/app-server/plugin-thread-config.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -624,11 +624,11 @@ describe("Codex plugin thread config", () => {
624624
it("merges app config with native hook config", () => {
625625
expect(
626626
mergeCodexThreadConfigs(
627-
{ "features.codex_hooks": true, hooks: { PreToolUse: [] } },
627+
{ "features.hooks": true, hooks: { PreToolUse: [] } },
628628
{ apps: { _default: { enabled: false } } },
629629
),
630630
).toEqual({
631-
"features.codex_hooks": true,
631+
"features.hooks": true,
632632
hooks: { PreToolUse: [] },
633633
apps: { _default: { enabled: false } },
634634
});

extensions/codex/src/app-server/run-attempt.test.ts

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2797,7 +2797,7 @@ describe("runCodexAppServerAttempt", () => {
27972797
const startRequest = harness.requests.find((request) => request.method === "thread/start");
27982798
const startConfig = (startRequest?.params as { config?: Record<string, unknown> } | undefined)
27992799
?.config;
2800-
expect(startConfig?.["features.codex_hooks"]).toBe(true);
2800+
expect(startConfig?.["features.hooks"]).toBe(true);
28012801
const preToolUseHooks = startConfig?.["hooks.PreToolUse"] as
28022802
| Array<{ hooks?: Array<{ command?: string; timeout?: number; type?: string }> }>
28032803
| undefined;
@@ -2885,7 +2885,7 @@ describe("runCodexAppServerAttempt", () => {
28852885
const startRequest = harness.requests.find((request) => request.method === "thread/start");
28862886
const startConfig = (startRequest?.params as { config?: Record<string, unknown> } | undefined)
28872887
?.config;
2888-
expect(startConfig?.["features.codex_hooks"]).toBe(true);
2888+
expect(startConfig?.["features.hooks"]).toBe(true);
28892889
expect(Array.isArray(startConfig?.["hooks.PreToolUse"])).toBe(true);
28902890
expect(Array.isArray(startConfig?.["hooks.PostToolUse"])).toBe(true);
28912891
expect(Array.isArray(startConfig?.["hooks.Stop"])).toBe(true);
@@ -2921,7 +2921,7 @@ describe("runCodexAppServerAttempt", () => {
29212921
const startRequest = harness.requests.find((request) => request.method === "thread/start");
29222922
const startConfig = (startRequest?.params as { config?: Record<string, unknown> } | undefined)
29232923
?.config;
2924-
expect(startConfig?.["features.codex_hooks"]).toBe(true);
2924+
expect(startConfig?.["features.hooks"]).toBe(true);
29252925
expect(Array.isArray(startConfig?.["hooks.PermissionRequest"])).toBe(true);
29262926
const relayId = extractRelayIdFromThreadRequest(startRequest?.params);
29272927
expect(
@@ -3061,7 +3061,7 @@ describe("runCodexAppServerAttempt", () => {
30613061
const startRequest = harness.requests.find((request) => request.method === "thread/start");
30623062
const startConfig = (startRequest?.params as { config?: Record<string, unknown> } | undefined)
30633063
?.config;
3064-
expect(startConfig?.["features.codex_hooks"]).toBe(false);
3064+
expect(startConfig?.["features.hooks"]).toBe(false);
30653065
expect(startConfig?.["hooks.PreToolUse"]).toEqual([]);
30663066
expect(startConfig?.["hooks.PostToolUse"]).toEqual([]);
30673067
expect(startConfig?.["hooks.PermissionRequest"]).toEqual([]);
@@ -5145,7 +5145,7 @@ describe("runCodexAppServerAttempt", () => {
51455145
throw new Error(`unexpected method: ${method}`);
51465146
});
51475147
const config = {
5148-
"features.codex_hooks": true,
5148+
"features.hooks": true,
51495149
"hooks.PreToolUse": [],
51505150
};
51515151
const expectedConfig = {
@@ -5204,7 +5204,7 @@ describe("runCodexAppServerAttempt", () => {
52045204
cwd: workspaceDir,
52055205
dynamicTools: [],
52065206
appServer,
5207-
config: { "features.codex_hooks": true, hooks: { PreToolUse: [] } },
5207+
config: { "features.hooks": true, hooks: { PreToolUse: [] } },
52085208
pluginThreadConfig: {
52095209
enabled: true,
52105210
inputFingerprint: "plugin-apps-input-1",
@@ -5217,7 +5217,7 @@ describe("runCodexAppServerAttempt", () => {
52175217
const requestCalls = request.mock.calls as unknown as Array<[string, { config?: unknown }]>;
52185218
expect(requestCalls.map(([method]) => method)).toEqual(["thread/start"]);
52195219
expect(requestCalls[0]?.[1].config).toEqual({
5220-
"features.codex_hooks": true,
5220+
"features.hooks": true,
52215221
"features.code_mode": true,
52225222
"features.code_mode_only": true,
52235223
hooks: { PreToolUse: [] },
@@ -5257,7 +5257,7 @@ describe("runCodexAppServerAttempt", () => {
52575257
cwd: workspaceDir,
52585258
dynamicTools: [],
52595259
appServer,
5260-
config: { "features.codex_hooks": true },
5260+
config: { "features.hooks": true },
52615261
pluginThreadConfig: {
52625262
enabled: true,
52635263
inputFingerprint: "plugin-apps-input-1",
@@ -5270,7 +5270,7 @@ describe("runCodexAppServerAttempt", () => {
52705270
cwd: workspaceDir,
52715271
dynamicTools: [],
52725272
appServer,
5273-
config: { "features.codex_hooks": true },
5273+
config: { "features.hooks": true },
52745274
pluginThreadConfig: {
52755275
enabled: true,
52765276
inputFingerprint: "plugin-apps-input-1",
@@ -5284,13 +5284,13 @@ describe("runCodexAppServerAttempt", () => {
52845284
const requestCalls = request.mock.calls as unknown as Array<[string, { config?: unknown }]>;
52855285
expect(requestCalls.map(([method]) => method)).toEqual(["thread/start", "thread/resume"]);
52865286
expect(requestCalls[0]?.[1].config).toEqual({
5287-
"features.codex_hooks": true,
5287+
"features.hooks": true,
52885288
"features.code_mode": true,
52895289
"features.code_mode_only": true,
52905290
...createPluginAppConfigPatch(),
52915291
});
52925292
expect(requestCalls[1]?.[1].config).toEqual({
5293-
"features.codex_hooks": true,
5293+
"features.hooks": true,
52945294
"features.code_mode": true,
52955295
"features.code_mode_only": true,
52965296
});
@@ -5750,7 +5750,7 @@ describe("runCodexAppServerAttempt", () => {
57505750
const resumeRequest = requests.find((request) => request.method === "thread/resume");
57515751
const resumeRequestParams = resumeRequest?.params as Record<string, unknown> | undefined;
57525752
const resumeConfig = resumeRequestParams?.config as Record<string, unknown> | undefined;
5753-
expect(resumeConfig?.["features.codex_hooks"]).toBe(true);
5753+
expect(resumeConfig?.["features.hooks"]).toBe(true);
57545754
expect(resumeConfig?.["features.code_mode"]).toBe(true);
57555755
expect(resumeConfig?.["features.code_mode_only"]).toBe(true);
57565756
expect(resumeRequestParams?.developerInstructions).toContain(CODEX_GPT5_BEHAVIOR_CONTRACT);

extensions/codex/src/app-server/thread-lifecycle.test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,13 +61,13 @@ describe("Codex app-server native code mode config", () => {
6161
appServer: createAppServerOptions() as never,
6262
developerInstructions: "test instructions",
6363
config: {
64-
"features.codex_hooks": true,
64+
"features.hooks": true,
6565
apps: { _default: { enabled: false } },
6666
},
6767
});
6868

6969
expect(request.config).toEqual({
70-
"features.codex_hooks": true,
70+
"features.hooks": true,
7171
apps: { _default: { enabled: false } },
7272
"features.code_mode": true,
7373
"features.code_mode_only": true,
@@ -101,14 +101,14 @@ describe("Codex app-server native code mode config", () => {
101101
developerInstructions: "test instructions",
102102
config: {
103103
project_doc_max_bytes: 64_000,
104-
"features.codex_hooks": true,
104+
"features.hooks": true,
105105
},
106106
},
107107
);
108108

109109
expect(request.config).toEqual({
110110
project_doc_max_bytes: 0,
111-
"features.codex_hooks": true,
111+
"features.hooks": true,
112112
"features.code_mode": true,
113113
"features.code_mode_only": true,
114114
});

0 commit comments

Comments
 (0)