Skip to content

Agents can author their own skills, which then load as standing instructions (no read-only skills option) #342

Description

@mostlydev

Summary

Under the hermes driver, an agent can write its own skill files, and those
files are re-read as standing instructions on later turns. For long-running
scheduled agents this creates a self-reinforcing loop: an agent's own
rationalization from one turn becomes durable policy for every turn after it.
There is currently no pod-level way to make agent skills read-only.

Detail

/root/.hermes/skills is mounted rw. Operator-authored SKILL.md files are
individually mounted ro, which correctly protects them:

$ claw compose exec -T <agent> mount | grep -i skill
/dev/sda2 on /root/.hermes/skills type ext4 (rw,relatime)
/dev/sda2 on /root/.hermes/skills/<skill>/SKILL.md type ext4 (ro,relatime)

But because the directory is writable, an agent can create new files beside
the protected ones — e.g. skills/<skill>/references/*.md — via skill_manage.
Those are then loaded on subsequent turns like any other reference.

Observed on a pod of scheduled agents over ~4 weeks: agents accumulated
hundreds of KB of self-authored reference files (one agent: 16 of 21 reference
files rewritten within a month, 226KB–793KB per agent), and skill_view became
the single most-called tool, with median call records of 230–390KB. The
practical effect is heavy per-turn token cost plus strong behavioural
convergence — the agent keeps re-reading conclusions it wrote earlier and
treats them as constraints.

This also silently defeats contract-level limits. An operator can bound a
memory file (e.g. "keep lessons.md to N entries") but the same content simply
migrates into self-authored skills, where no bound exists.

Request

Any one of these would be sufficient:

  1. Read-only skills mount — a pod/service option to mount the agent skills
    directory ro, not just the individual SKILL.md files.
  2. Operator-controllable tool gating — merge pod-supplied
    CLAWDAPUS_DISABLED_TOOLS so skill_manage can be disabled from the pod
    file (see hermes: add disable-tools so operators can extend the driver's disabled tool set #341; that alone would cover this).
  3. A separate writable location for agent-authored notes that is not
    loaded as skill context, keeping "things the agent learned" distinct from
    "instructions the agent follows."

Why it matters

Skills are contract surface. Anything loaded every turn is effectively policy,
so write access to it is a privilege escalation from "agent memory" to "agent
self-modifying its own instructions" — fine for an interactive coding assistant,
risky for unattended long-running agents.

Environment

claw version 0.26.0, hermes driver, hermes-base:v2026.6.19-claw.3.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions