# What changed in hatch

> 25 changes in hatch 1 from its official release notes, upgrade guides and advisories: 1 breaking, 6 new APIs and options. Each one cited. Sources checked 2026-10-18. HTML: https://unstale.sh/pypi/hatch/

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

## hatch 1

### Breaking changes

- Prerelease distributions are no longer automatically selected when falling back to the latest compatible version, but remain installable when explicitly requested. (1.18.0) — [release notes](https://github.com/pypa/hatch/releases/tag/hatch-v1.18.0)

### New APIs and options

- 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. (1.18.0) — [release notes](https://github.com/pypa/hatch/releases/tag/hatch-v1.18.0)
- Reports what each source redirects. (1.18.0) — [release notes](https://github.com/pypa/hatch/releases/tag/hatch-v1.18.0)
- Set this environment variable to disable sources. (1.18.0) — [release notes](https://github.com/pypa/hatch/releases/tag/hatch-v1.18.0)
- Pass --force to allow an explicit version downgrade. (1.18.0) — [release notes](https://github.com/pypa/hatch/releases/tag/hatch-v1.18.0)
- 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. (1.18.0) — [release notes](https://github.com/pypa/hatch/releases/tag/hatch-v1.18.0)
- This version specifier set is enforced against the running Hatch version by commands that read project metadata. (1.18.0) — [release notes](https://github.com/pypa/hatch/releases/tag/hatch-v1.18.0)

### Behavior and default changes

- Default CPython distributions are upgraded to the 20260807 release. (1.18.0) — [release notes](https://github.com/pypa/hatch/releases/tag/hatch-v1.18.0)
- The version command can bump statically defined project.version values and update pyproject.toml in place. (1.18.0) — [release notes](https://github.com/pypa/hatch/releases/tag/hatch-v1.18.0)
- 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. (1.18.0) — [release notes](https://github.com/pypa/hatch/releases/tag/hatch-v1.18.0)
- The top-level sources table acts as an alias for the default environment, and environments inherit sources entry by entry. (1.18.0) — [release notes](https://github.com/pypa/hatch/releases/tag/hatch-v1.18.0)

### Tooling

- Internal dependency installation no longer relies on pip and uses uv instead. (1.18.0) — [release notes](https://github.com/pypa/hatch/releases/tag/hatch-v1.18.0)
- Hatch supports managing Python 3.15 distributions, currently 3.15.0rc1. (1.18.0) — [release notes](https://github.com/pypa/hatch/releases/tag/hatch-v1.18.0)

### Fixes and other changes

- Consolidated resolution fixes regressions that could drop or inconsistently resolve environment and project extras, and ensures undefined features are always validated. (1.18.1) — [release notes](https://github.com/pypa/hatch/releases/tag/hatch-v1.18.1)
- Hyphens in plugin names are normalized when building environment option variable names, so options for hyphenated plugins resolve to the correct variable. (1.18.1) — [release notes](https://github.com/pypa/hatch/releases/tag/hatch-v1.18.1)
- Context formatting is applied to the lock-filename environment option, resolving fields such as {env_name} and {matrix:...} when computing the lock file path. (1.18.1) — [release notes](https://github.com/pypa/hatch/releases/tag/hatch-v1.18.1)
- Environment creation no longer crashes when a metadata hook exists but is not installed in the hatch CLI environment. (1.18.0) — [release notes](https://github.com/pypa/hatch/releases/tag/hatch-v1.18.0)
- Environment creation now selects the distribution matching Hatch's running interpreter, rather than silently installing a GIL-enabled distribution. (1.18.0) — [release notes](https://github.com/pypa/hatch/releases/tag/hatch-v1.18.0)
- 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. (1.18.0) — [release notes](https://github.com/pypa/hatch/releases/tag/hatch-v1.18.0)
- Stale coverage data is erased before tests run with coverage. (1.18.0) — [release notes](https://github.com/pypa/hatch/releases/tag/hatch-v1.18.0)
- The generated Pyrefly config is valid on Windows; backslashes in absolute paths are no longer interpreted as TOML escape sequences. (1.18.0) — [release notes](https://github.com/pypa/hatch/releases/tag/hatch-v1.18.0)
- Environment dependency extras are no longer dropped when a metadata hook is configured. (1.17.1) — [release notes](https://github.com/pypa/hatch/releases/tag/hatch-v1.17.1)
- Hatch no longer injects a Ruff extend key when ruff.toml already contains one. (1.17.1) — [release notes](https://github.com/pypa/hatch/releases/tag/hatch-v1.17.1)
- The uv locker passes --no-header so generated lockfiles are deterministic. (1.17.1) — [release notes](https://github.com/pypa/hatch/releases/tag/hatch-v1.17.1)
- Workspace-member extras are resolved from the member's own metadata. (1.17.1) — [release notes](https://github.com/pypa/hatch/releases/tag/hatch-v1.17.1)
