Summary
OpenCode support is currently mixing two different product models:
- Plannotator owns the planning loop — the agent is expected to call
submit_plan automatically.
- Plannotator is an explicit review tool — users want to call it only when they decide the plan is worth reviewing.
A growing cluster of feedback says the current default is too eager and too broad.
Pain points
Common sentiment:
- "I really enjoy Plannotator when I want to call it, but invoking itself on the OpenCode Plan mode is a bit annoying."
- "The agent eagerly calls it."
- "I don't want the build agent to call it."
- "I'd love a way if I could only manually invoke Plannotator on the last plan submitted by the agent."
What this looks like in practice:
submit_plan is still available to all primary agents, not just the planning agent.
- The
build agent is excluded from extra prompt injection, but it can still access the tool.
- Post-approval behavior is still biased toward implementation handoff, which clashes with users who want to stop, stay in planning, or manually choose the next step.
- The plugin still assumes the planning agent is literally named
plan, which makes alternate workflows harder.
- Users who like OpenCode's native planning flow feel like Plannotator is hijacking it instead of layering on top of it.
Why this matters
This is not just prompt tuning.
The complaints around eager invocation, build-agent access, auto-switching, and hardcoded plan-agent behavior all point to the same underlying issue: the OpenCode contract is ambiguous.
Right now the plugin is trying to serve both:
- users who want automatic plan interception
- users who want manual, on-demand review
Those should probably not share one default behavior.
Existing issues this seems to unify
I also think this should be resolved before expanding agent-facing OpenCode power further, e.g. #295.
Proposal
Introduce an explicit OpenCode workflow mode instead of relying on one global default.
1. manual-review (recommended default)
Behavior:
- No prompt injection into agent planning.
- No
submit_plan tool exposed to agents.
- User lets OpenCode plan normally.
- User explicitly invokes a new slash command such as
/plannotator-last-plan to open the most recent plan-like assistant output in the Plannotator UI.
This matches the feedback from users who like Plannotator, but only when they choose to use it.
2. plan-only-auto
Behavior:
- Only configured planning agents can see/call
submit_plan.
build should not see or call it.
- Approval should default to
stay or stop, not implicitly hand off to build.
- Planning agent name should be configurable, not hardcoded to
plan.
This keeps the automatic review workflow for users who want Plannotator tightly integrated with planning.
3. all-primary-agents (legacy / advanced opt-in)
Behavior:
- Preserves the current broad access model for users who intentionally want any primary agent to call
submit_plan.
Why /plannotator-last-plan is promising
We already have /plannotator-last, which proves the plugin can fetch the last assistant message from the current OpenCode session.
That suggests a natural manual-review workflow:
- Let OpenCode's plan agent work normally.
- When the user wants review, they run
/plannotator-last-plan.
- Plannotator opens the last plan-like assistant output in the normal plan review UI.
- The user can annotate, approve, or request changes without the agent eagerly invoking review mid-flow.
This would give users an explicit bridge between native OpenCode planning and Plannotator review, without forcing the two to be the same thing.
Acceptance criteria
- OpenCode exposes a clear workflow setting/mode instead of one implicit default.
manual-review mode exists and disables eager agent invocation.
- A manual slash command such as
/plannotator-last-plan opens the last plan output in the plan review UI.
plan-only-auto restricts submit_plan to configured planning agents only.
- Planning agent name or names are configurable instead of hardcoded to
plan.
- Approval flow can stay/stop instead of always assuming implementation handoff.
- Existing users who rely on the broad current behavior can still opt into it explicitly.
Open question
Should manual-review become the default for OpenCode, with auto-interception as an opt-in mode?
My current read is yes.
Summary
OpenCode support is currently mixing two different product models:
submit_planautomatically.A growing cluster of feedback says the current default is too eager and too broad.
Pain points
Common sentiment:
What this looks like in practice:
submit_planis still available to all primary agents, not just the planning agent.buildagent is excluded from extra prompt injection, but it can still access the tool.plan, which makes alternate workflows harder.Why this matters
This is not just prompt tuning.
The complaints around eager invocation, build-agent access, auto-switching, and hardcoded plan-agent behavior all point to the same underlying issue: the OpenCode contract is ambiguous.
Right now the plugin is trying to serve both:
Those should probably not share one default behavior.
Existing issues this seems to unify
submit_planstill feels too prompt-dependent / ambiguousplanI also think this should be resolved before expanding agent-facing OpenCode power further, e.g. #295.
Proposal
Introduce an explicit OpenCode workflow mode instead of relying on one global default.
1.
manual-review(recommended default)Behavior:
submit_plantool exposed to agents./plannotator-last-planto open the most recent plan-like assistant output in the Plannotator UI.This matches the feedback from users who like Plannotator, but only when they choose to use it.
2.
plan-only-autoBehavior:
submit_plan.buildshould not see or call it.stayorstop, not implicitly hand off tobuild.plan.This keeps the automatic review workflow for users who want Plannotator tightly integrated with planning.
3.
all-primary-agents(legacy / advanced opt-in)Behavior:
submit_plan.Why
/plannotator-last-planis promisingWe already have
/plannotator-last, which proves the plugin can fetch the last assistant message from the current OpenCode session.That suggests a natural manual-review workflow:
/plannotator-last-plan.This would give users an explicit bridge between native OpenCode planning and Plannotator review, without forcing the two to be the same thing.
Acceptance criteria
manual-reviewmode exists and disables eager agent invocation./plannotator-last-planopens the last plan output in the plan review UI.plan-only-autorestrictssubmit_planto configured planning agents only.plan.Open question
Should
manual-reviewbecome the default for OpenCode, with auto-interception as an opt-in mode?My current read is yes.