Documentation menu

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.