Problem
Hermes' memory guidance instructs the agent to persist reusable procedure as a skill, and it ships whenever memory is configured — including when skill_manage has been removed from the tool set.
The injected guidance contains, in substance:
If you've discovered a new way to do something, solved a problem that could be necessary later, save it as a skill with the skill tool.
SKILLS_GUIDANCE is already gated on skill capability. MEMORY_GUIDANCE is not, so an agent with memory but no skill_manage is told every turn to do something it cannot do.
Why this matters beyond a dangling instruction
We disabled skill_manage on a fleet of long-running scheduled agents to stop them promoting their own rationalisations into standing instructions. The gate held — zero authoring attempts across 8 agents over two days, confirmed both by file mtimes and by tool-call telemetry.
The behaviour did not stop. It relocated. Within the same day, the same class of self-authored standing rules reappeared in the next writable surface the agents had: free-text fields on domain records reached through their normal tool API. Removing the tool removed the destination, not the drive, and the drive is injected by the prompt on every turn.
We enumerated the remaining agent-writable free-text surfaces in our own application and found ~318KB across four record types. That is not a Clawdapus problem — it is ours. But we would have had no reason to look if the instruction had stopped when the capability did.
Impact
- An agent is instructed each turn toward an action it cannot perform, which is at best wasted context and at worst a persistent nudge toward workarounds.
- Capability gating becomes unreliable as a governance mechanism: an operator who disables a tool reasonably expects the corresponding behavioural pressure to go with it.
- The failure is silent. Nothing logs "agent was told to save a skill but has no skill tool."
Suggested fix
Gate MEMORY_GUIDANCE's skill-saving sentence on the same capability check that already gates SKILLS_GUIDANCE — if skill_manage is absent, drop the sentence and keep the rest of the memory guidance intact.
More generally: injected guidance should be derived from the resolved tool set, so that disabling a capability removes both the ability and the instruction. Any guidance string that names a specific tool is a candidate for the same treatment.
Environment
Problem
Hermes' memory guidance instructs the agent to persist reusable procedure as a skill, and it ships whenever memory is configured — including when
skill_managehas been removed from the tool set.The injected guidance contains, in substance:
SKILLS_GUIDANCEis already gated on skill capability.MEMORY_GUIDANCEis not, so an agent with memory but noskill_manageis told every turn to do something it cannot do.Why this matters beyond a dangling instruction
We disabled
skill_manageon a fleet of long-running scheduled agents to stop them promoting their own rationalisations into standing instructions. The gate held — zero authoring attempts across 8 agents over two days, confirmed both by file mtimes and by tool-call telemetry.The behaviour did not stop. It relocated. Within the same day, the same class of self-authored standing rules reappeared in the next writable surface the agents had: free-text fields on domain records reached through their normal tool API. Removing the tool removed the destination, not the drive, and the drive is injected by the prompt on every turn.
We enumerated the remaining agent-writable free-text surfaces in our own application and found ~318KB across four record types. That is not a Clawdapus problem — it is ours. But we would have had no reason to look if the instruction had stopped when the capability did.
Impact
Suggested fix
Gate
MEMORY_GUIDANCE's skill-saving sentence on the same capability check that already gatesSKILLS_GUIDANCE— ifskill_manageis absent, drop the sentence and keep the rest of the memory guidance intact.More generally: injected guidance should be derived from the resolved tool set, so that disabling a capability removes both the ability and the instruction. Any guidance string that names a specific tool is a candidate for the same treatment.
Environment
skill_manageremoved via the image-adapter workaround in hermes: adddisable-toolsso operators can extend the driver's disabled tool set #341 (no supported pod-level knob exists yet)