mcp: elicitation-gate worktrees remove force=true on a dirty or locked tree #168
Labels
No labels
breaking
bug
documentation
enhancement
epic
good first issue
help wanted
refactoring
resolution/duplicate
resolution/invalid
resolution/wontfix
security
severity/critical
severity/high
severity/low
severity/medium
status/abandoned
status/blocked
status/needs-decision
status/needs-info
status/needs-verification
testing
upstream
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
sixfold-space/madtea#168
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The README's clobber section promises "Force exists, but you type it" - true for the CLI, not over MCP:
madt_worktrees action=remove force=truediscards a dirty or locked worktree with no consent step, and the non-force refusal text even points the agent atforce=true(pinned ininternal/mcp/tools_worktrees_test.go). The only guard today is thedestructiveHintannotation, which is advisory to the client - a user who has allowlistedmadt_*tools gets no ask at all.Wire the same elicitation gate
madt_deleteuses:removewithforce=trueon a worktree that is dirty or locked elicits accept/decline before anything is deleted; decline returns a plain abort, not an error to route around.--forcestays ungated (human-typed).internal/mcp/foreign_guard_chain_test.go) keeps working; it just gains the consent step when the tree is dirty.This is the behavior change that makes the README's clobber claim true on the MCP surface, not just the CLI.
Acceptance:
madt_help, and the safety docs state the gate