fix(hooks): guard against non-string tool output in afterToolResult hooks #1750
+2
−0
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Fixes #1749
typeof output.output !== "string"guard inedit-error-recoveryanddelegate-task-retryhooks to preventTypeErrorcrash when MCP tools return non-string resultsProblem
MCP tools (e.g., Linear MCP, Notion MCP) can return structured JSON objects instead of plain strings. When this happens,
output.outputisundefinedin theafterToolResultcallback, causing:Two hooks are affected:
src/hooks/edit-error-recovery/hook.ts— callsoutput.output.toLowerCase()src/hooks/delegate-task-retry/hook.ts— passesoutput.outputtodetectDelegateTaskError()Fix
Added the same guard pattern already used in
tool-output-truncator.ts:This ensures both hooks gracefully skip when the tool output is not a string, consistent with existing conventions in the codebase.
Changes
src/hooks/edit-error-recovery/hook.ts.toLowerCase()src/hooks/delegate-task-retry/hook.tsdetectDelegateTaskError()Summary by cubic
Prevented TypeError crashes in afterToolResult hooks when MCP tools return non-string outputs. Added a string check for output.output in edit-error-recovery and delegate-task-retry, skipping processing if it isn’t a string.
Written for commit bb6a011. Summary will update on new commits.