{"version":"2.1.267","anchor":"hooks-engine-async-hook-handlers-can-now-register-a-catch","canonical_anchor":"hooks-engine-async-hook-handlers-can-now-register-a-catch","heading":"Hooks engine: async hook handlers can now register a .catch(handler)","tier":"use","area":"Hooks","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.267\/e\/hooks-engine-async-hook-handlers-can-now-register-a-catch","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.267","markdown":"### Hooks engine: async hook handlers can now register a .catch(handler)\n\nAsync hook handlers can now attach a .catch(handler) to react to a failed downstream call\n\n**What**\n\nThe system plugins use to hook into Claude Code's behavior now lets an asynchronous hook registration chain a `.catch(handler)` onto itself, giving hook authors a way to respond when a downstream call times out or errors, instead of the failure simply being thrown.\n\n**Why**\n\nThis gives plugin developers a way to gracefully handle a failure in their hook rather than crashing the operation it's attached to. Hooks created with `engine.create` are the exception: they have no grace budget, and `.catch` doesn't apply to them, since their failure always fails the load.\n\n- Area: Hooks\n- Tier: Use it now\n- Useful: 3\/5\n- Signal: 3\/5"}