# What changed in cspell

> 41 changes in cspell 10 from its official release notes, upgrade guides and advisories: 5 breaking, 2 deprecations, 9 new APIs and options. Each one cited. Sources checked 2026-10-20. HTML: https://unstale.sh/npm/cspell/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## cspell 10

### Breaking changes

- With this option, cspell lint now fails when every found file was skipped; use --no-must-find-files to allow the run to pass. (10.4.0) — [release notes](https://github.com/streetsidesoftware/cspell/releases/tag/v10.4.0)
- cspell lint now skips files that are symbolic links or in linked directories by default; --follow-symlinks allows checking them. (10.4.0) — [release notes](https://github.com/streetsidesoftware/cspell/releases/tag/v10.4.0)
- When enabled, cspell stops searching for .gitignore files at the file's git repository root, so outer repository rules do not apply to worktrees or submodules. (10.4.0) — [release notes](https://github.com/streetsidesoftware/cspell/releases/tag/v10.4.0)
- Requests are served only when they map under the private root; requests resolving outside it are refused with `VFSErrorUnsupportedRequest`. (10.3.6) — [release notes](https://github.com/streetsidesoftware/cspell/releases/tag/v10.3.6)
- Using command-line globs together with --force-check is now an error; omit --force-check to filter a file list by glob. (10.3.5) — [release notes](https://github.com/streetsidesoftware/cspell/releases/tag/v10.3.5)

### Deprecations

- This import path is deprecated; import its RPC exports from @cspell/rpc instead. (10.4.0) — [release notes](https://github.com/streetsidesoftware/cspell/releases/tag/v10.4.0)
- This method is deprecated; it was intended for use only inside cspell-lib and will be removed in a future major version. (10.3.6) — [release notes](https://github.com/streetsidesoftware/cspell/releases/tag/v10.3.6)

### New APIs and options

- Enables checking documents referenced by symbolic links for a whole job; the command-line no-option overrides it. (10.4.0) — [release notes](https://github.com/streetsidesoftware/cspell/releases/tag/v10.4.0)
- Enables following symbolic links in glob searches for a whole job; the command-line no-option overrides it. (10.4.0) — [release notes](https://github.com/streetsidesoftware/cspell/releases/tag/v10.4.0)
- Setting locale makes cspell-tools build case-insensitive forms and lowercase words using the dictionary language's case rules. (10.4.0) — [release notes](https://github.com/streetsidesoftware/cspell/releases/tag/v10.4.0)
- Allows checking documents referenced by symbolic links when named with --file or --file-list. (10.4.0) — [release notes](https://github.com/streetsidesoftware/cspell/releases/tag/v10.4.0)
- Adds the followSymlinks option to the lint API for checking documents referenced by symbolic links. (10.4.0) — [release notes](https://github.com/streetsidesoftware/cspell/releases/tag/v10.4.0)
- Makes cspell lint follow symbolic links and search linked directories during glob searches. (10.4.0) — [release notes](https://github.com/streetsidesoftware/cspell/releases/tag/v10.4.0)
- Adds the globSymlinks option to the lint API to follow symbolic links during glob searches. (10.4.0) — [release notes](https://github.com/streetsidesoftware/cspell/releases/tag/v10.4.0)
- The .m and .matlab extensions are associated with MATLAB; MATLAB binary formats and MEX files are marked as binary. (10.4.0) — [release notes](https://github.com/streetsidesoftware/cspell/releases/tag/v10.4.0)
- SpellCheckFileOptions now declares forceCheck, allowing it to be passed to spellCheckDocument and spellCheckFile with type checking. (10.3.5) — [release notes](https://github.com/streetsidesoftware/cspell/releases/tag/v10.3.5)

### Performance

- cspell-lib no longer searches the whole text of documents that will not be checked, reducing wasted work for tools that pass it excluded or disabled documents. (10.3.6) — [release notes](https://github.com/streetsidesoftware/cspell/releases/tag/v10.3.6)

### Behavior and default changes

- Sets help and table output width when it contains a positive number, taking priority over terminal width. (10.4.0) — [release notes](https://github.com/streetsidesoftware/cspell/releases/tag/v10.4.0)
- The default-command help now lists lint options; --verbose and --issue-template also show their extra help. (10.4.0) — [release notes](https://github.com/streetsidesoftware/cspell/releases/tag/v10.4.0)
- Dictionary lookups now use the case rules of the dictionary's locale, supporting Turkish, Azerbaijani, and Lithuanian casing. (10.4.0) — [release notes](https://github.com/streetsidesoftware/cspell/releases/tag/v10.4.0)
- cspell lint now uses --language-id and --locale when deciding whether to check a file, matching the language and locale used during checking. (10.4.0) — [release notes](https://github.com/streetsidesoftware/cspell/releases/tag/v10.4.0)
- Can read documents from any URL supported by the file system when text is not passed; stdin documents still need their text. (10.4.0) — [release notes](https://github.com/streetsidesoftware/cspell/releases/tag/v10.4.0)
- Can read documents from any URL supported by the file system when text is not passed; stdin documents still need their text. (10.4.0) — [release notes](https://github.com/streetsidesoftware/cspell/releases/tag/v10.4.0)
- With `--cache`, files are rechecked when this option differs from the run that cached their result. (10.3.6) — [release notes](https://github.com/streetsidesoftware/cspell/releases/tag/v10.3.6)
- With `--cache`, files are rechecked when this option differs from the run that cached their result. (10.3.6) — [release notes](https://github.com/streetsidesoftware/cspell/releases/tag/v10.3.6)
- The command-line flag overrides the config setting for directive validation, controlling what is shown as well as what is checked. (10.3.6) — [release notes](https://github.com/streetsidesoftware/cspell/releases/tag/v10.3.6)
- With `--cache`, files are rechecked when this option differs from the run that cached their result. (10.3.6) — [release notes](https://github.com/streetsidesoftware/cspell/releases/tag/v10.3.6)
- With `--cache`, files are rechecked when this option differs from the run that cached their result. (10.3.6) — [release notes](https://github.com/streetsidesoftware/cspell/releases/tag/v10.3.6)
- With `--cache`, files are rechecked when this option differs from the run that cached their result. (10.3.6) — [release notes](https://github.com/streetsidesoftware/cspell/releases/tag/v10.3.6)

### Tooling

- Published TypeScript types for cspell, cspell-lib, and cspell-io no longer require @types/node, though web globals still require dom or Node types. (10.4.0) — [release notes](https://github.com/streetsidesoftware/cspell/releases/tag/v10.4.0)

### Fixes and other changes

- Ignore patterns are applied in written order, and the last matching pattern decides; this applies to cspell-lib API checks. (10.4.0) — [release notes](https://github.com/streetsidesoftware/cspell/releases/tag/v10.4.0)
- Its iterator methods now return MapIterator, and it no longer declares that it implements Map, allowing types to compile with TypeScript's esnext lib. (10.4.0) — [release notes](https://github.com/streetsidesoftware/cspell/releases/tag/v10.4.0)
- Unknown directive issues are included in JSON reporter output again. (10.3.6) — [release notes](https://github.com/streetsidesoftware/cspell/releases/tag/v10.3.6)
- The performance summary now accounts for all Total Time, with Setup Time, Between Files, and Other Time lines. (10.3.6) — [release notes](https://github.com/streetsidesoftware/cspell/releases/tag/v10.3.6)
- Unknown in-document directives are reported and count as issues when directive validation is enabled; the command-line flags override the config setting. (10.3.6) — [release notes](https://github.com/streetsidesoftware/cspell/releases/tag/v10.3.6)
- Globs starting with ** no longer skip files supplied with --file or --file-list when the project is under a dot folder. (10.3.5) — [release notes](https://github.com/streetsidesoftware/cspell/releases/tag/v10.3.5)
- Checks every file supplied with --file or --file-list, even when ignorePaths or the files setting would skip it. (10.3.5) — [release notes](https://github.com/streetsidesoftware/cspell/releases/tag/v10.3.5)
- shouldCheckDocument now honors forceCheck for documents excluded by ignorePaths or disabled by overrides or languageSettings. (10.3.5) — [release notes](https://github.com/streetsidesoftware/cspell/releases/tag/v10.3.5)
- Issues after multiple text changes are now reported at the correct position in the file. (10.3.5) — [release notes](https://github.com/streetsidesoftware/cspell/releases/tag/v10.3.5)
- Substitutions supplied directly as find-and-replacement pairs are now applied even without substitutionDefinitions. (10.3.5) — [release notes](https://github.com/streetsidesoftware/cspell/releases/tag/v10.3.5)
- Thai text and other text using international word segmentation are now checked normally instead of stopping with an internal error. (10.3.5) — [release notes](https://github.com/streetsidesoftware/cspell/releases/tag/v10.3.5)
