npm / cspell
cspell
What changed in cspell 10, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-20.
5 breaking2 deprecations9 new APIs and options1 performance12 behavior and defaults1 tooling11 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli initcspell 1041 changes
Breaking changes 5
With this option, cspell lint now fails when every found file was skipped; use --no-must-find-files to allow the run to pass.
cspell lint now skips files that are symbolic links or in linked directories by default; --follow-symlinks allows checking them.
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.
Requests are served only when they map under the private root; requests resolving outside it are refused with
VFSErrorUnsupportedRequest.Using command-line globs together with --force-check is now an error; omit --force-check to filter a file list by glob.
Deprecations 2
This import path is deprecated; import its RPC exports from @cspell/rpc instead.
This method is deprecated; it was intended for use only inside cspell-lib and will be removed in a future major version.
New APIs and options 9
Enables checking documents referenced by symbolic links for a whole job; the command-line no-option overrides it.
Enables following symbolic links in glob searches for a whole job; the command-line no-option overrides it.
Setting locale makes cspell-tools build case-insensitive forms and lowercase words using the dictionary language's case rules.
Allows checking documents referenced by symbolic links when named with --file or --file-list.
Adds the followSymlinks option to the lint API for checking documents referenced by symbolic links.
Makes cspell lint follow symbolic links and search linked directories during glob searches.
Adds the globSymlinks option to the lint API to follow symbolic links during glob searches.
The .m and .matlab extensions are associated with MATLAB; MATLAB binary formats and MEX files are marked as binary.
SpellCheckFileOptions now declares forceCheck, allowing it to be passed to spellCheckDocument and spellCheckFile with type checking.
Performance 1
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.
Behavior and default changes 12
Sets help and table output width when it contains a positive number, taking priority over terminal width.
The default-command help now lists lint options; --verbose and --issue-template also show their extra help.
Dictionary lookups now use the case rules of the dictionary's locale, supporting Turkish, Azerbaijani, and Lithuanian casing.
cspell lint now uses --language-id and --locale when deciding whether to check a file, matching the language and locale used during checking.
Can read documents from any URL supported by the file system when text is not passed; stdin documents still need their text.
Can read documents from any URL supported by the file system when text is not passed; stdin documents still need their text.
With
--cache, files are rechecked when this option differs from the run that cached their result.With
--cache, files are rechecked when this option differs from the run that cached their result.The command-line flag overrides the config setting for directive validation, controlling what is shown as well as what is checked.
With
--cache, files are rechecked when this option differs from the run that cached their result.With
--cache, files are rechecked when this option differs from the run that cached their result.With
--cache, files are rechecked when this option differs from the run that cached their result.
Tooling 1
Published TypeScript types for cspell, cspell-lib, and cspell-io no longer require @types/node, though web globals still require dom or Node types.
Fixes and other changes 11
Ignore patterns are applied in written order, and the last matching pattern decides; this applies to cspell-lib API checks.
Its iterator methods now return MapIterator, and it no longer declares that it implements Map, allowing types to compile with TypeScript's esnext lib.
Unknown directive issues are included in JSON reporter output again.
The performance summary now accounts for all Total Time, with Setup Time, Between Files, and Other Time lines.
Unknown in-document directives are reported and count as issues when directive validation is enabled; the command-line flags override the config setting.
Globs starting with ** no longer skip files supplied with --file or --file-list when the project is under a dot folder.
Checks every file supplied with --file or --file-list, even when ignorePaths or the files setting would skip it.
shouldCheckDocument now honors forceCheck for documents excluded by ignorePaths or disabled by overrides or languageSettings.
Issues after multiple text changes are now reported at the correct position in the file.
Substitutions supplied directly as find-and-replacement pairs are now applied even without substitutionDefinitions.
Thai text and other text using international word segmentation are now checked normally instead of stopping with an internal error.