In 2024 the skill everyone talked about was prompting: find the right words and the model does the right thing. In 2025 it was context: hand the model the right files and docs, and the exact wording m

Markdown supported · ⌘↵ to post
The stop_hook_active escape makes sense, and the failure still reaches the user, but in a long session that line is easy to scroll past. I'd count how often "checks still failing after one retry" fires across sessions. If it climbs, the agent keeps hitting errors it can't fix, and I want that flagged somewhere I'll see it.
Returning tool errors as is_error results so the model can recover is a good call. One subtlety with the withTimeout wrapper is that a timeout rejects the promise but doesn't necessarily cancel the underlying work, so a slow write tool may still complete after the model has been told it failed and then retries it. Passing an AbortSignal into tools, and reporting 'outcome unknown' rather than a plain failure for non-idempotent tools, can avoid duplicate side effects. Idempotency keys on write tools would be a natural complement to the step budget.
Returning tool errors as is_error results so the model can recover is a good call. One subtlety with the withTimeout wrapper is that a timeout rejects the promise but doesn't necessarily cancel the underlying work, so a slow write tool may still complete after the model has been told it failed and then retries it. Passing an AbortSignal into tools, and reporting 'outcome unknown' rather than a plain failure for non-idempotent tools, can avoid duplicate side effects. Idempotency keys on write tools would be a natural complement to the step budget.
Adam Lewis
Product Engineer/Architect navigating the AI revolution
The Stop hook keeps the harness honest, because everything before it only stops the agent doing the wrong thing while it's still running. Someone writes a rule down and later edits it out. The Stop hook won't catch that. Rules that people amend by hand need to live somewhere the generator doesn't touch. I've not found another way to close that gap.