refactor(hooks): replace direct output.args mutation with replaceToolArgs (question/webfetch/null-byte)

Replace Object.assign(output.args, truncatedArgs), output.args.url = resolution.url,
and output.args.command = ... .replace(/\x00/g, "") with replaceToolArgs() calls
in question-label-truncator, webfetch-redirect-guard, and plugin/tool-execute-before.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
YeonGyu-Kim
2026-05-18 12:40:10 +09:00
parent af66b8de0b
commit 13d8857415
3 changed files with 7 additions and 5 deletions
+2 -2
View File
@@ -3,7 +3,7 @@ import { randomUUID } from "node:crypto"
import { getMainSessionID } from "../features/claude-code-session-state"
import { clearBoulderState } from "../features/boulder-state"
import { log } from "../shared"
import { log, replaceToolArgs } from "../shared"
import { stripInvisibleAgentCharacters } from "../shared/agent-display-names"
import { resolveSessionAgent } from "./session-agent-resolver"
import { parseRalphLoopArguments } from "../hooks/ralph-loop/command-arguments"
@@ -54,7 +54,7 @@ export function createToolExecuteBeforeHandler(args: {
return async (input, output): Promise<void> => {
if (input.tool.toLowerCase() === "bash" && typeof output.args.command === "string") {
if (output.args.command.includes("\x00")) {
output.args.command = output.args.command.replace(/\x00/g, "")
replaceToolArgs(output, { command: output.args.command.replace(/\x00/g, "") })
log("[tool-execute-before] Stripped null bytes from bash command", {
sessionID: input.sessionID,
callID: input.callID,