---
changelog:
  category: Release
  version: ultracite@7.12.1
date: '2026-09-28T03:45:20Z'
seo:
  description: >-
    Agent hooks now fix only the file the agent edited. The generated hook
    command passes a new --hook flag, and ultracite fix --hook reads the agent's
    payload…
title: ultracite@7.12.1
type: changelog
---
## Patch Changes

- 00dd547: Agent hooks now fix only the file the agent edited. The generated hook command passes a new `--hook` flag, and `ultracite fix --hook` reads the agent's payload from stdin: Claude Code and CodeBuddy (`tool_input.file_path`), Cursor (`file_path`) and Windsurf (`tool_info.file_path`). A file outside the project, one that no longer exists, or one the project's linters do not handle is skipped. A payload with no readable file path keeps the previous whole-project run. Re-running `ultracite init` rewrites a hook from an earlier init to the new command, including one generated before this change or for a different package manager or linter.
- 300a814: Update `@biomejs/biome` to 2.5.14. Releases 2.5.13 and 2.5.14 add only nursery rules (14 of them, including `noReturnInFinally`, `noSvelteAtHtmlTags` and `useValidTestTitle`), with no stable-group additions, removals or promotions. The Biome presets deliberately leave nursery rules off, so they are unchanged.
- b8b183b: Update dependencies (`@clack/prompts` 1.8, `empathic` 2.1, `magicast`, `nypm`, `string-width` 8.3, `yaml` and `zod` 4.6).
- b59b8aa: Update oxfmt to 0.70.0 and re-target the markdown `:::` fence patch. Releases 0.68 through 0.70 change no options; they fix suppression-comment handling, comment placement around operators and `as`/`satisfies`, and several YAML and CSS edge cases. oxfmt 0.69 also ships a native markdown formatter, but `.md` files still go through the Prettier-based path, so the fence patch still applies.
- 548c8b0: Update oxlint to 1.85.0. Releases 1.83 through 1.85 add and remove no rules and change no options, so the presets are unchanged. Note that `jest/prefer-strict-equal`, `vitest/prefer-strict-equal`, `vitest/prefer-to-be-truthy` and `vitest/prefer-to-be-falsy` now offer suggestions instead of fixes, so `ultracite fix` reports them rather than rewriting them. `unicorn/consistent-function-scoping` also now catches functions that only capture variables from an outer ancestor scope.
- 0bc6cd6: Update the ESLint family: `eslint` 10.11, `eslint-plugin-unicorn` 76, `@typescript-eslint/*` 8.70.1, `eslint-plugin-jsdoc` 64.5, `eslint-plugin-astro` 3.2, `eslint-plugin-n` 18.4, `eslint-plugin-vue` 10.11.1, `@tanstack/eslint-plugin-query` 5.104, `@next/eslint-plugin-next` 16.3.6, `@darraghor/eslint-plugin-nestjs-typed` 7.5.6, `eslint-plugin-qwik` 1.20.1, `eslint-plugin-html` 8.2.1 and `eslint-plugin-react-doctor` / `oxlint-plugin-react-doctor` 0.9.14.
  
  The ESLint core preset picks up unicorn's ten new JavaScript rules automatically: `no-async-iterator-callback`, `no-unused-builtin-method-return` (which replaces the now-deprecated `no-unused-array-method-return`), `no-unused-iterator-helper`, `no-useless-set-construction`, `no-using-resource-escape`, `prefer-combined-guards`, `prefer-iterator-zip`, `prefer-json-import`, `prefer-temporal-conversion` and `prefer-uint8array-hex`. The CSS-only unicorn rules added in v75 stay off for JavaScript files. unicorn 76 makes `no-immediate-mutation` skip conditional mutations and `no-break-in-nested-loop` skip `continue` by default; the preset keeps those defaults because oxlint's `no-immediate-mutation` behaves the same way and checking `continue` would contradict `prefer-continue`.
- 0bcb2c6: Update `prettier-plugin-astro` to 1.1.0 (the version `ultracite init` installs for Astro projects with Prettier) and refresh the transitive Prettier lock to 3.9.9. Prettier 3.9.7 through 3.9.9 are formatting fixes with no option changes, so the Prettier preset is unchanged. prettier-plugin-astro 1.1 makes `astroAllowShorthand` tri-state. When it is unset, which is how Ultracite's generated config leaves it, attributes now stay as written instead of `{value}` being expanded to `value={value}`. Set `astroAllowShorthand: false` in your Prettier config to keep the 1.0 behaviour.
- 8b39375: Update `@shadcn/lint` to 0.2.0 (the version `ultracite init` installs for the opt-in `ultracite/oxlint/shadcn` preset). The release adds Vue and Svelte support and fixes theme, barrel and class-site discovery; the rules and their options are unchanged, so the preset is too. Under Oxlint the plugin reads only the `<script>` blocks of `.vue` and `.svelte` files, not their templates.
- 0bc6cd6: Update `eslint-plugin-sonarjs` to 4.2.1. The ESLint preset adopts its 16 new rules automatically (Vue, Cypress, Playwright, Testing Library, Vitest, Lodash, jQuery and Axios checks). The `ultracite/oxlint/js-plugins` preset now enables every sonarjs rule that does not need type information, adding 35 rules. These include the 15 new non-type-aware rules and nine test rules that older versions of oxlint's JS plugin bridge could not load. sonarjs 4.2.1 also raised the `no-nested-functions` default threshold from 4 to 5; both presets pin `threshold: 4` to keep the previous strictness.
