Allow custom commands/skills to set a permission mode (e.g. plan), enabling a "plan → implement" command flow

Open 💬 0 comments Opened Jun 20, 2026 by clown6613

What I'm trying to do

I'd like a single custom command (skill) that starts work in plan mode, lets Claude research and present a plan via ExitPlanMode, and then continues straight into implementation after I approve the plan — all from one command, without having to remember to toggle Shift+Tab or start the session with a CLI flag.

Current state

As far as I can tell from the docs:

  • --permission-mode plan (CLI flag) and defaultMode: "plan" (settings.json) control the startup permission mode for the whole session.
  • The ExitPlanMode tool already handles the "present plan → approve → implement" transition nicely.
  • But custom command / skill frontmatter has no field to set the permission mode (no permission-mode: plan). So I can't scope "plan-first" to a specific command — only to the whole session.

This means "plan-first for this kind of task, normal mode otherwise" isn't expressible per-command. I either flip the global default, or manually toggle each time.

Proposed feature

Add a permission-mode (or default-mode) frontmatter field to custom commands / skills, e.g.:

---
name: plan-then-build
description: Research and plan first, then implement after approval
permission-mode: plan
---

When the command is invoked, the session enters that permission mode for the duration of the command, then the existing ExitPlanMode approval flow carries it into implementation.

Why

  • Lets teams ship "safe by default" planning commands without changing the global defaultMode.
  • Makes the plan→implement workflow a one-step, repeatable command instead of a manual toggle.
  • Keeps the real read-only guard of plan mode (prompt-only instructions don't enforce the no-edit guard).

Alternatives considered

  • Global defaultMode: "plan" — too coarse; affects every task.
  • Prompting inside the command ("don't edit, plan first") — not enforced; Claude can still edit.

View original on GitHub ↗