Skip to content

Commit 1d06681

Browse files
author
Gaia Veloce
committed
fix: avoid blocking stale PreToolUse relays
1 parent 7ef85bf commit 1d06681

4 files changed

Lines changed: 12 additions & 18 deletions

File tree

src/agents/harness/native-hook-relay.test.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -247,15 +247,15 @@ describe("native hook relay registry", () => {
247247
);
248248
expect(relay.commandForEvent("pre_tool_use")).toBe(
249249
"/usr/local/bin/node '/opt/Open Claw/openclaw.mjs' hooks relay --provider codex --relay-id " +
250-
`${relay.relayId} --generation ${relay.generation} --event pre_tool_use --timeout 1234`,
250+
`${relay.relayId} --generation ${relay.generation} --event pre_tool_use --pre-tool-use-unavailable noop --timeout 1234`,
251251
);
252252
expect(relay.commandForEvent("pre_tool_use", { timeoutMs: 900 })).toBe(
253253
"/usr/local/bin/node '/opt/Open Claw/openclaw.mjs' hooks relay --provider codex --relay-id " +
254-
`${relay.relayId} --generation ${relay.generation} --event pre_tool_use --timeout 900`,
254+
`${relay.relayId} --generation ${relay.generation} --event pre_tool_use --pre-tool-use-unavailable noop --timeout 900`,
255255
);
256256
expect(relay.commandForEvent("pre_tool_use", { timeoutMs: 2_000 })).toBe(
257257
"/usr/local/bin/node '/opt/Open Claw/openclaw.mjs' hooks relay --provider codex --relay-id " +
258-
`${relay.relayId} --generation ${relay.generation} --event pre_tool_use --timeout 1234`,
258+
`${relay.relayId} --generation ${relay.generation} --event pre_tool_use --pre-tool-use-unavailable noop --timeout 1234`,
259259
);
260260
});
261261

@@ -564,7 +564,7 @@ describe("native hook relay registry", () => {
564564
expect(relay.shouldRelayEvent("pre_tool_use")).toBe(true);
565565
expect(relay.commandForEvent("pre_tool_use")).toBe(
566566
"/usr/local/bin/node '/opt/Open Claw/openclaw.mjs' hooks relay --provider codex --relay-id " +
567-
`${relay.relayId} --generation ${relay.generation} --event pre_tool_use --timeout 1234`,
567+
`${relay.relayId} --generation ${relay.generation} --event pre_tool_use --pre-tool-use-unavailable noop --timeout 1234`,
568568
);
569569
});
570570

@@ -584,7 +584,7 @@ describe("native hook relay registry", () => {
584584
expect(relay.shouldRelayEvent("pre_tool_use")).toBe(true);
585585
expect(relay.commandForEvent("pre_tool_use")).toBe(
586586
"/usr/local/bin/node '/opt/Open Claw/openclaw.mjs' hooks relay --provider codex --relay-id " +
587-
`${relay.relayId} --generation ${relay.generation} --event pre_tool_use --timeout 1234`,
587+
`${relay.relayId} --generation ${relay.generation} --event pre_tool_use --pre-tool-use-unavailable noop --timeout 1234`,
588588
);
589589
});
590590

src/agents/harness/native-hook-relay.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -449,10 +449,7 @@ export function registerNativeHookRelay(
449449
relayId,
450450
generation: registration.generation,
451451
event,
452-
preToolUseUnavailable:
453-
event === "pre_tool_use" && !nativeHookRelayEventHasLocalWork(registration, event)
454-
? "noop"
455-
: undefined,
452+
preToolUseUnavailable: event === "pre_tool_use" ? "noop" : undefined,
456453
nice: params.command?.nice,
457454
timeoutMs: resolveNativeHookRelayCommandTimeoutMs(
458455
params.command?.timeoutMs,

src/cli/native-hook-relay-cli.test.ts

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -393,7 +393,7 @@ describe("native hook relay CLI", () => {
393393
expect(callGateway).not.toHaveBeenCalled();
394394
});
395395

396-
it("fails closed for PreToolUse when the gateway relay is unavailable", async () => {
396+
it("defaults PreToolUse unavailable handling to observational noop", async () => {
397397
const callGateway = vi.fn(async () => {
398398
throw new Error("gateway closed");
399399
});
@@ -411,13 +411,7 @@ describe("native hook relay CLI", () => {
411411
);
412412

413413
expect(exitCode).toBe(0);
414-
expect(JSON.parse(stdout.text())).toEqual({
415-
hookSpecificOutput: {
416-
hookEventName: "PreToolUse",
417-
permissionDecision: "deny",
418-
permissionDecisionReason: "Native hook relay unavailable",
419-
},
420-
});
414+
expect(stdout.text()).toBe("");
421415
expect(stderr.text()).toContain("native hook relay unavailable");
422416
});
423417

src/cli/native-hook-relay-cli.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,10 @@ function writeNativeHookRelayUnavailableResponse(params: {
288288
const response = renderNativeHookRelayUnavailableResponse({
289289
provider: params.provider,
290290
event: params.event,
291-
preToolUseUnavailable: params.opts.preToolUseUnavailable,
291+
preToolUseUnavailable:
292+
params.event === "pre_tool_use"
293+
? (params.opts.preToolUseUnavailable ?? "noop")
294+
: params.opts.preToolUseUnavailable,
292295
message: params.message ?? "Native hook relay unavailable",
293296
});
294297
writeText(params.stdout, response.stdout);

0 commit comments

Comments
 (0)