The manifest
[patches]
Last updated August 24, 2026
[patches] applies your saved diffs to dependencies at install time —
the manifest side of embr patch, which writes the
table for you:
[patches]
"chief/bin@0.2.0" = "patches/chief_bin@0.2.0.patch"
Keys#
scope/name@version, with an exact version — a patch is a claim
about one published archive, and a range would make "which bytes" depend
on resolution.
The exact version is deliberate friction: when the dependency
resolves to a new version, install fails with the mismatch rather than
silently dropping your fix. Re-do the patch against the new version or
embr patch remove it.
Values#
Repo-relative paths to .patch files (forward slashes, conventionally
under patches/). Absolute paths and .. escapes are refused, so
installs stay reproducible for everyone who clones the repository. Commit
the patches/ folder.
Scope#
Root manifest only, same as [overrides]: a
dependency's own [patches] table is never consulted, and
publish strips the table from the packed manifest.
Workspace members can't be patched — edit their source directly.
At install#
Every key must land exactly — a key naming a package that left the graph,
resolved to a different version, or that would cover only some
environment roots is a hard error, never a silent
skip. The lockfile records each patch's file and a hash of its bytes,
which --locked verifies. The full workflow lives on the
embr patch page.