# NousResearch/hermes-agent · Patch tool required params, error recovery, verification fixes

## Open now

- Nothing open on GitHub.

These issues and PRs address bugs where conditionally required patch tool parameters were systematically omitted, add per-mode parameter hints in schema descriptions, and improve recoverability from malformed patch calls. A per-turn file-mutation verifier footer is also introduced.

## TL;DR

- 12 member(s): 0 open issue(s), 2 closed issue(s), 0 open PR(s), 4 merged PR(s), 6 PR(s) closed without merging.
- A fix was merged to main in PR #22143. Verify it addresses your case.
- **Recommended:** read PR #22143 (and any competing PRs below) before filing. Confirm the merged change covers your symptom.

## Maintainer resolution verdict

- Internal-tracker verdict over this cluster's issue members: `partially_resolved` · deciding PR(s): `pr-22143`. This is distinct from the fix status above. Weigh it yourself.

## How this cluster was grouped

- Link evidence (`STRUCTURAL_PARTIAL`): some members are connected by structural evidence (shared changed files, or a closing/superseded reference); the rest are joined by an automated relevance judgement over their text.
- Members outside that structural core may belong to a different underlying problem.
- Pairwise link density `0.16`: the share of member pairs that carry a link, counting a structural link in full and a relevance-only link at 0.36. `1.00` means every pair is linked.

## Closed / duplicate issues

- #15524: \[Bug\]: \`patch\` tool conditionally required parameters are systematically omitted
- #33064: \[Bug\]: skill_manage with action='patch' consistently requires old_string parameter and fails to apply patches when updating google-workspace skill

## Prior & competing PRs

- **#22143: fix(patch-tool): advertise per-mode required params in schema descriptions**. merged to main · fix tier `verified`
  - maintainer direction: category `merged`; implication `superseded`
  - files: `tests/tools/test_file_tools.py`, `tools/file_tools.py`
- **#33652: fix(skill_manage): support V4A patch format in action='patch'**. closed without merge · fix tier `suggested`
  - maintainer direction: category `superseded_by_pr`; implication `superseded`; refs `#33625`, `#33064`
- **#97295: feat(skill_manage): operations\[\] is the call — each op names its skill; atomic with cross-skill rollback**. merged to main · fix tier `verified`
  - maintainer direction: category `merged`; implication `superseded`
  - files: `tests/tools/test_skill_manage_batch.py`, `tests/tools/test_skill_manage_schema_diet.py`, `tools/skill_manager_tool.py`
- **#97650: fix(skill_manage): missing-old_string errors teach recovery instead of dead-ending into write_file clobbers (#33064, salvage #63879)**. merged to main · fix tier `verified`
  - maintainer direction: category `merged`; implication `superseded`
  - files: `tests/tools/test_skill_manager_tool.py`, `tools/skill_manager_tool.py`
- **#15673: fix(patch-tool): advertise per-mode required params in schema descriptions**. closed without merge
  - maintainer direction: category `merged_via`; implication `superseded`; refs `#22143`
- **#22149: fix(patch-tool): per-mode required-param hints + per-turn file-mutation verifier footer**. closed without merge
  - maintainer direction: category `merged_via`; implication `superseded`; refs `3adcc6441`, `#24498`, `#15673`, `#24498`
- **#24498: feat(agent): per-turn file-mutation verifier footer**. merged to main
  - maintainer direction: category `merged`; implication `superseded`
  - files: `hermes_cli/config.py`, `run_agent.py`, `tests/run_agent/test_file_mutation_verifier.py`, `website/docs/reference/environment-variables.md`, `website/docs/user-guide/configuration.md`
- **#33625: fix(skills): support V4A skill_manage patches**. closed without merge
  - maintainer direction: category `uncategorized`; implication `needs_llm`
- **#63876: fix(patch): make a half-formed replace call recoverable instead of a dead end**. closed without merge
  - maintainer direction: category `implemented_elsewhere`; implication `superseded`; refs `#507`, `#507`, `#507`, `#54572`
- **#63879: fix(skills): make skill_manage patch failures recoverable instead of a dead end**. closed without merge
  - maintainer direction: category `merged_via`; implication `superseded`; refs `dea2b02a67`, `0af77d1709`, `b8203b9510`, `#97650`, `#97295`

## Fix status

- Merged to main in PR #22143 (cited above). No release data is tracked. Verify downstream.
- Fix last verified (merged) `2026-08-29`.
- Subsystem: `agent`
