Skip to content

fix: stop coding agents from passing a name to cluster.delete - #347

Open
azygoss wants to merge 1 commit into
monk-io:mainfrom
azygoss:fix/cluster-delete-selected-guard
Open

fix: stop coding agents from passing a name to cluster.delete#347
azygoss wants to merge 1 commit into
monk-io:mainfrom
azygoss:fix/cluster-delete-selected-guard

Conversation

@azygoss

@azygoss azygoss commented Aug 21, 2026

Copy link
Copy Markdown

Summary

  • monk.cluster.delete always destroys the currently selected cluster. Its schema has no clusterName / clusterId; additionalProperties: true means those keys are accepted and silently ignored.
  • A coding agent that writes cluster.delete {clusterName: "other"} still deletes whatever is selected. That destroyed a live 2-node cluster while hunting (approval title named the selected cluster; the agent had narrated the bogus name).
  • This PR is the fix that can land in this repo: every agent instruction surface now says list/switch/confirm first, never pass a name, and stop if the named cluster is not in the list.

Root cause

The MCP tool is "delete the selected cluster". The plugin skills currently say switch then delete, which is correct if no name is passed. Agents given "delete cluster X" pass clusterName anyway. The extra property does not retarget the call.

The swallow lives in monk-agent (generated plugin; GENERATED.md). The skill/agent markdown is what coding agents execute, which is the failure mode in this repository.

What changed

  • skills/monk/SKILL.md and the packaged plugins/monk copy
  • skills/monk/references/agent-workflow.md (and packaged copy)
  • agents/monk-deployer.md, agents/monk-frontman.md
  • Antigravity SKILL.md + rules/monk-safety.md
  • tests/cluster-delete-selected-guard.sh — copies stay identical; every surface mentions selected-cluster + clusterName
  • CI step on the unix install job

Validation

./tests/cluster-delete-selected-guard.sh
git diff --check

The monk-agent RPC still ignores extra properties; a follow-up in monk-agent should reject unknown target names instead of deleting the selection. Until that lands, this is the guard that stops coding agents from walking users into the trap.

Fixes #345

monk.cluster.delete always destroys the currently selected cluster.
clusterName/clusterId are extra properties (additionalProperties: true)
and are silently ignored, so a call that looks like "delete X" still
deletes the selected cluster. Teach every agent instruction surface to
list/switch/confirm first, and never pass a name.

Fixes monk-io#345
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant