fix(explore): capture branch runs openspec new change without the first-write confirmation the same skill requires
Version: @fission-ai/openspec@1.13.0 (also present on main as of 2026-09-10)
Follow-up to #1715 / #1716, which added the explicit first-write confirmation to explore mode. The capture branch appears not to have been brought under that rule.
Summary
skills/openspec-explore/SKILL.md states twice that the agent must get an explicit yes/no confirmation, in a separate user message, before its first write-capable action — naming openspec new change as an example. The capture branch in the same file then instructs the agent to transition "seamlessly" into running openspec new change and creating artifacts, with no confirmation step.
The two readings produce opposite behavior for the same user turn, and the file does not say which one governs.
The conflict
Rule, L14:
Before the first write-capable action, name the artifacts or files you would change and what you would do, ask a direct yes/no question, and wait for the user's confirmation in a separate message. Confirmation covers only the scope you described; ask again before expanding it. For a new change, scaffold it first as described below.
Rule restated in Guardrails, L338:
Don't auto-capture - Offer to save insights, don't just do it. Read-only commands and tools need no confirmation. Before the first write-capable action—including openspec new change or another command that writes files—name the artifacts or files and proposed changes, ask a direct yes/no question, and wait for explicit confirmation in a separate user message.
Capture branch, L144-L146:
If the user asks you to capture the exploration as a new change, transition seamlessly into the requested capture:
- Run
openspec new change "<name>" (with --store <id> when applicable) before creating any artifacts.
Steps 2-4 (L147-L149) then create artifacts in dependency order, still with no confirmation gate.
Why it is genuinely ambiguous
Both readings are defensible from the text as written:
- Capture request = the confirmation. The user did ask for a change, so requiring a second yes/no is redundant, and "seamlessly" says so.
- Capture request ≠ the confirmation. L338 requires the confirmation to be a separate user message, and L14 requires it to name the artifacts or files — a bare "capture this as a change" does neither, and cannot, since the artifact set is only known after
openspec status. L42 adds "Accepting an answer or a batch of recommendations is not permission to write."
L14's own closing sentence — "For a new change, scaffold it first as described below" — points at the capture branch, which makes it read as if scaffolding is exempt, while L338 names openspec new change as exactly the thing that is not exempt.
In practice the agent's behavior varies by which passage it weighs, so the same request either writes .openspec.yaml plus several artifacts immediately, or stops and asks.
Impact
The capture branch is the one path in explore mode that writes files, so whichever way it resolves determines whether the #1716 guarantee holds at all. Left ambiguous, explore mode's "Don't auto-capture" guardrail is unenforceable in the only case where it applies.
Suggested fix
Either resolution works; the file just needs to pick one.
Option 1 — capture request counts as confirmation (keeps the current flow). Say so explicitly at L144 and carve it out of the rule:
If the user asks you to capture the exploration as a new change, that request is
the confirmation required above for scaffolding the change and creating the
artifacts they named. Transition into the requested capture. Ask again before
creating any artifact they did not ask for.
Option 2 — require the confirmation (keeps the rule uniform). Insert a step before L146:
1. Name the change you would scaffold and the artifacts you would create, ask a
direct yes/no question, and wait for the user's confirmation in a separate
message.
2. Run `openspec new change "<name>"` ...
Option 1 preserves the intent of "seamlessly" and is the smaller change. Option 2 is stricter and matches #1715's report more literally. I lean toward Option 1 with the explicit carve-out, since re-asking immediately after "capture this as a change" is the friction #1017 and the surrounding wording seem to be trying to avoid — but that is a call for the maintainers.
Whichever is chosen, src/core/templates/workflows/explore.ts needs the matching edit, per the file set in #1716.
Happy to open the PR once you pick a direction.
fix(explore): capture branch runs
openspec new changewithout the first-write confirmation the same skill requiresVersion:
@fission-ai/openspec@1.13.0(also present onmainas of 2026-09-10)Follow-up to #1715 / #1716, which added the explicit first-write confirmation to explore mode. The capture branch appears not to have been brought under that rule.
Summary
skills/openspec-explore/SKILL.mdstates twice that the agent must get an explicit yes/no confirmation, in a separate user message, before its first write-capable action — namingopenspec new changeas an example. The capture branch in the same file then instructs the agent to transition "seamlessly" into runningopenspec new changeand creating artifacts, with no confirmation step.The two readings produce opposite behavior for the same user turn, and the file does not say which one governs.
The conflict
Rule, L14:
Rule restated in Guardrails, L338:
Capture branch, L144-L146:
Steps 2-4 (L147-L149) then create artifacts in dependency order, still with no confirmation gate.
Why it is genuinely ambiguous
Both readings are defensible from the text as written:
openspec status. L42 adds "Accepting an answer or a batch of recommendations is not permission to write."L14's own closing sentence — "For a new change, scaffold it first as described below" — points at the capture branch, which makes it read as if scaffolding is exempt, while L338 names
openspec new changeas exactly the thing that is not exempt.In practice the agent's behavior varies by which passage it weighs, so the same request either writes
.openspec.yamlplus several artifacts immediately, or stops and asks.Impact
The capture branch is the one path in explore mode that writes files, so whichever way it resolves determines whether the #1716 guarantee holds at all. Left ambiguous, explore mode's "Don't auto-capture" guardrail is unenforceable in the only case where it applies.
Suggested fix
Either resolution works; the file just needs to pick one.
Option 1 — capture request counts as confirmation (keeps the current flow). Say so explicitly at L144 and carve it out of the rule:
Option 2 — require the confirmation (keeps the rule uniform). Insert a step before L146:
Option 1 preserves the intent of "seamlessly" and is the smaller change. Option 2 is stricter and matches #1715's report more literally. I lean toward Option 1 with the explicit carve-out, since re-asking immediately after "capture this as a change" is the friction #1017 and the surrounding wording seem to be trying to avoid — but that is a call for the maintainers.
Whichever is chosen,
src/core/templates/workflows/explore.tsneeds the matching edit, per the file set in #1716.Happy to open the PR once you pick a direction.