pypi / hatch
hatch
What changed in hatch 1, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-18.
1 breaking6 new APIs and options4 behavior and defaults2 tooling12 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli inithatch 125 changes
Breaking changes 1
Prerelease distributions are no longer automatically selected when falling back to the latest compatible version, but remain installable when explicitly requested.
New APIs and options 6
The --all/-a flag builds the workspace root and every member defined by the selected environment, consolidating artifacts in the root dist directory by default; a root without a project table is skipped.
Reports what each source redirects.
Set this environment variable to disable sources.
Pass --force to allow an explicit version downgrade.
Add a sources environment option to redirect dependencies at install time without altering published metadata; sources can target local paths, Git repositories, URLs, alternate indexes, or workspace members.
This version specifier set is enforced against the running Hatch version by commands that read project metadata.
Behavior and default changes 4
Default CPython distributions are upgraded to the 20260807 release.
The version command can bump statically defined project.version values and update pyproject.toml in place.
Python commands and the environment python option support free-threaded distribution names such as 3.13t and 3.14t without requiring HATCH_PYTHON_VARIANT_GIL.
The top-level sources table acts as an alias for the default environment, and environments inherit sources entry by entry.
Tooling 2
Internal dependency installation no longer relies on pip and uses uv instead.
Hatch supports managing Python 3.15 distributions, currently 3.15.0rc1.
Fixes and other changes 12
Consolidated resolution fixes regressions that could drop or inconsistently resolve environment and project extras, and ensures undefined features are always validated.
Hyphens in plugin names are normalized when building environment option variable names, so options for hyphenated plugins resolve to the correct variable.
Context formatting is applied to the lock-filename environment option, resolving fields such as {env_name} and {matrix:...} when computing the lock file path.
Environment creation no longer crashes when a metadata hook exists but is not installed in the hatch CLI environment.
Environment creation now selects the distribution matching Hatch's running interpreter, rather than silently installing a GIL-enabled distribution.
Commands run through hatch run can again be interrupted with Ctrl-C because the parent process's ignored SIGINT is no longer inherited by the child.
Stale coverage data is erased before tests run with coverage.
The generated Pyrefly config is valid on Windows; backslashes in absolute paths are no longer interpreted as TOML escape sequences.
Environment dependency extras are no longer dropped when a metadata hook is configured.
Hatch no longer injects a Ruff extend key when ruff.toml already contains one.
The uv locker passes --no-header so generated lockfiles are deterministic.
Workspace-member extras are resolved from the member's own metadata.