{"name":"turn.complete","slug":"turn-complete","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.265","released_at":"2026-09-08 19:05:16","spans":4}},"aliases":[],"entries":[{"version":"2.1.318","anchor":"mods-classicsessionstart-hook-refuses-calls-in-pre-started","heading":"Some mod calls are refused in a classic.SessionStart hook on pre-started sessions","line":"If a host started the session early, some mod calls made from a `classic.SessionStart` hook are now refused instead of hanging","released_at":"2026-11-03 21:55:17","reason":"found in this entry's text, named in this entry"},{"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.292","anchor":"hooksplugin-runtime-abort-propagation-keptresult-and-re","heading":"Plugin hook engine handles cancellation and partly applied answers differently","line":"Plugin hook modules now report when their answer was only partly applied, and pass cancellation on to the work they do for a caller","released_at":"2026-10-06 17:10:31","reason":"found in this entry's text"},{"version":"2.1.271","anchor":"turn-scoped-tracking-for-plugin-originated-prompt-submission","heading":"Turn-scoped tracking for plugin-originated prompt submissions","line":"Prompts submitted by plugins are now tracked against the current conversation turn","released_at":"2026-09-14 19:45:19","reason":"found in this entry's text"},{"version":"2.1.271","anchor":"turncomplete-now-uses-the-actual-turnid-instead-of-generati","heading":"turn.complete now uses the actual turnId instead of generating a new one","line":"Turn-completion reporting now uses the real turn ID instead of generating a new one","released_at":"2026-09-14 19:45:19","reason":"found in this entry's text"},{"version":"2.1.269","anchor":"plugin-hooks-engine-gains-new-event-types-toolcheck-confi","heading":"Plugin hooks engine gains new event types: tool.check, config.set, config.describe, session.attach, session.detach, plugin.register","line":"Plugin hooks can now react to tool-call dry-runs, config changes, and session attach\/detach events.","released_at":"2026-09-11 18:12:49","reason":"found in this entry's text"},{"version":"2.1.269","anchor":"turncomplete-telemetry-only-fires-when-a-hook-wants-it","heading":"turn.complete telemetry only fires when a hook wants it","line":"A new `turn.complete` hook reports a turn's final answer, refusal, usage and error state, but only when a plugin listens for it","released_at":"2026-09-11 18:12:49","reason":"found in this entry's text, named in this entry"},{"version":"2.1.267","anchor":"compaction-request-now-stamps-usage-onto-turncomplete-when","heading":"Compaction request now stamps usage onto turn.complete when available","line":"The turn-complete event now includes a computed usage figure whenever one is available","released_at":"2026-09-09 18:25:42","reason":"found in this entry's text"},{"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"}],"entries_total":16,"docs":[{"source":"claude-code","path":"changelog","title":"Claude Code changelog","documented":false},{"source":"claude-code","path":"plugins\/mods\/api","title":"Use the mods API","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}],"docs_total":5,"gates":[],"related":[{"name":"turn.start","slug":"turn-start","description":"Plugin hooks are limited in what they may rewrite, and cannot take over question prompts."},{"name":"turn.step","slug":"turn-step","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-complete","family_url":"https:\/\/changelogs.core-directive.com\/reference\/setting.json"}