{"name":"turn.step","slug":"turn-step","family":"setting","title":"Settings keys","noun":"settings key","description":"Plugin hooks are limited in what they may rewrite, and cannot take over question prompts.","description_source":"entry","described_by":{"version":"2.1.242","anchor":"each-hook-event-enforces-what-a-plugin-is-allowed-to-change"},"presence":{"first_seen":null,"removed_in":null,"in_current_build":false,"newest_mined":"2.1.319","builds":0,"mined_builds":159,"first_cited":{"version":"2.1.269","released_at":"2026-09-11 18:12:49","spans":2}},"aliases":[],"entries":[{"version":"2.1.299","anchor":"hook-turnstart-now-counted-when-deciding-whether-hooks-are","heading":"Plugin hooks on turn start now count when Claude Code checks for turn hooks","line":"A plugin hook listening for the start of a turn now counts as an active turn hook, alongside the step and complete hooks","released_at":"2026-10-14 00:23:19","reason":"found in this entry's text"},{"version":"2.1.271","anchor":"turnstep-plugin-hook-events-now-carry-an-agentid","heading":"turn.step plugin hook events now carry an agentId","line":"The turn.step hook event now includes an agentId field","released_at":"2026-09-14 19:45:19","reason":"found in this entry's text"},{"version":"2.1.269","anchor":"turnstep-hooks-can-override-or-veto-the-model-per-request","heading":"turn.step hooks can override or veto the model per request","line":"New `turn.step` hook lets plugins redirect which model handles a request, subject to a policy check","released_at":"2026-09-11 18:12:49","reason":"found in this entry's text, named in this entry"},{"version":"2.1.269","anchor":"streaming-async-generator-hook-dispatch-built-end-to-end","heading":"Streaming (async-generator) hook dispatch built end-to-end, but only 'turn.step' is enabled to use it","line":"Claude Code builds streaming hook support end-to-end, but only enables it for the 'turn.step' event","released_at":"2026-09-11 18:12:49","reason":"found in this entry's text, named in this entry"},{"version":"2.1.267","anchor":"plugin-event-schema-gains-a-usage-field-on-turnstep-and-t","heading":"Plugin event schema gains a usage field on turn.step and turn.complete","line":"Plugin turn.step and turn.complete events now include token usage details","released_at":"2026-09-09 18:25:42","reason":"found in this entry's text"},{"version":"2.1.267","anchor":"turnstep-and-turncomplete-telemetry-events-now-include-usa","heading":"turn.step and turn.complete telemetry events now include usage data","line":"Two internal telemetry events now include usage data like token counts when available","released_at":"2026-09-09 18:25:42","reason":"found in this entry's text"},{"version":"2.1.265","anchor":"hook-registry-gains-commanddescribe-as-a-core-hook-event","heading":"Hook registry gains command.describe as a core hook event","line":"Claude Code adds a new internal hook event called command.describe","released_at":"2026-09-08 19:05:16","reason":"found in this entry's text"},{"version":"2.1.260","anchor":"turn-lifecycle-event-hooks-added-to-session-loop","heading":"Turn-lifecycle event hooks added to session loop","line":"The session loop now emits turn-start and turn-step lifecycle markers.","released_at":"2026-09-03 22:32:02","reason":"named in this entry, found in this entry's text"},{"version":"2.1.242","anchor":"each-hook-event-enforces-what-a-plugin-is-allowed-to-change","heading":"Each hook event enforces what a plugin is allowed to change","line":"Plugin hooks are limited in what they may rewrite, and cannot take over question prompts.","released_at":"2026-08-24 19:16:14","reason":"found in this entry's text"},{"version":"2.1.242","anchor":"plugin-modules-with-a-api-that-can-hook-events-and-redraw-th","heading":"Plugin modules with a $ API that can hook events and redraw the terminal UI","line":"Plugins can install code that intercepts tool calls and repaints parts of the terminal interface.","released_at":"2026-08-24 19:16:14","reason":"found in this entry's text"}],"entries_total":11,"docs":[{"source":"claude-code","path":"changelog","title":"Claude Code changelog","documented":false},{"source":"claude-code","path":"plugins\/mods\/events","title":"React to events with a mod","documented":false},{"source":"claude-code","path":"plugins\/mods\/reference","title":"Mods reference","documented":false},{"source":"claude-code","path":"plugins\/mods\/test","title":"Test a mod","documented":false},{"source":"claude-code","path":"plugins\/mods\/troubleshoot","title":"Troubleshoot a mod","documented":false}],"docs_total":5,"gates":[],"related":[{"name":"turn.complete","slug":"turn-complete","description":"Plugin hooks are limited in what they may rewrite, and cannot take over question prompts."},{"name":"turn.start","slug":"turn-start","description":"Plugin hooks are limited in what they may rewrite, and cannot take over question prompts."},{"name":"turnAttribution","slug":"turnattribution","description":"Task notifications can now say which conversational turn they belong to via a turn-attribution option."},{"name":"turnBriefTailChars","slug":"turnbrieftailchars","description":"Background classifier gets a new, currently inactive setting to control how much recent conversation text it quotes"},{"name":"turnEffort","slug":"turneffort","description":"The effort label in your status line stays correct when the model changes mid-turn."},{"name":"turnOrigin","slug":"turnorigin","description":"Resuming a session now also checks and strips invalid turnOrigin values from user messages"}],"url":"https:\/\/changelogs.core-directive.com\/reference\/setting\/turn-step","family_url":"https:\/\/changelogs.core-directive.com\/reference\/setting.json"}