Apply Patch
The built-in edit_file does an exact string match on a single file and has no fuzzy
tolerance. For multi-file changes, or when edit_file keeps failing to find the string,
construct a unified diff and apply it atomically with git.
Procedure
Write the unified diff to a file in the sandbox (use
write_fileor a heredoc viaexecute):diff --git a/path/to/file b/path/to/file --- a/path/to/file +++ b/path/to/file @@ -10,7 +10,7 @@ context line -old line +new lineValidate before applying:
git apply --check changes.patchApply:
git apply changes.patch(use-p0if paths are nota/...b/...).If
git applyrejects the hunk, the surrounding context is stale —read_filethe exact lines again, regenerate the diff with correct context, and retry.
When to prefer this
- Editing 3+ files for one logical change (atomic, all-or-nothing).
- Repetitive or whitespace-sensitive edits where
edit_fileexact-match struggles. - Re-applying a patch produced elsewhere (e.g. from a PR or
git diff).
Always run the verify-changes skill afterwards.