Skip to content

[Bug]: Sisyphus prompt unconditionally references a non-existent plan agent #3596

@EnochLi15

Description

@EnochLi15

Bug Description

Sisyphus prompting currently instructs the orchestrator to call task(subagent_type="plan", ...) for multi-step work, but plan is not a guaranteed built-in planner agent.

From the current source:

  • src/agents/sisyphus/gpt-5-4.ts tells Sisyphus to consult task(subagent_type="plan", ...) for 2+ step work.
  • src/agents/dynamic-agent-core-sections.ts repeats the same guidance for non-Claude models.
  • The actual planner agent is prometheus (Prometheus - Plan Builder), not plan.
  • plan is only injected as a hidden subagent alias when planner_enabled && replace_plan is true in agent-config-handler.ts.

This means the prompt can direct Sisyphus to a subagent that does not exist in valid configurations, which leads to runtime delegation failures.

There is also a second consistency issue: even when the hidden plan alias is injected, it inherits model settings from prometheus but does not inherit the Prometheus prompt, so the planner behavior is still split across two different prompt systems.

Steps to Reproduce

  1. Use a config where Sisyphus is enabled, but sisyphus_agent.replace_plan is false (or sisyphus_agent.planner_enabled is false).
  2. Trigger a Sisyphus prompt path that uses the GPT/native dynamic planning instructions.
  3. Ask for a multi-step implementation task.
  4. Sisyphus is instructed to call task(subagent_type="plan", ...).
  5. plan is not injected in this configuration, so delegation can fail with an agent-not-found/unavailable-plan style error.

Expected Behavior

One of these should be true, consistently:

  • Sisyphus should delegate to prometheus directly, since that is the real planner.
  • Or plan should be guaranteed to exist whenever the prompt references it.
  • Or plan should be a true alias of Prometheus, including prompt/behavior, not only model inheritance.

At minimum, the prompt should not reference plan unless the runtime guarantees that plan exists.

Actual Behavior

The prompt layer and runtime agent topology are out of sync:

  • prompt says: use plan
  • actual planner identity says: prometheus
  • runtime only conditionally injects hidden plan
  • hidden plan does not inherit the Prometheus prompt

So the system can either:

  • fail at runtime because plan is missing, or
  • succeed via a hidden plan alias that does not actually run the full Prometheus planner prompt.

Doctor Output

 oMoMoMoMo Doctor 

 ⚠ 1 issue found:

1. Loaded plugin is outdated
   Loaded 3.17.1, latest 3.17.4.
   Fix: Update: cd "/Users/enoch/.cache/opencode" && bun add oh-my-opencode@latest
   Affects: plugin features

Note: the bug report above is based on inspection of the current repository source on the dev branch, not only local installed plugin behavior.

Error Logs

If helpful, I can provide a runtime repro log as a follow-up, but the source-level mismatch already appears sufficient to demonstrate the bug.

Configuration

{
  "sisyphus_agent": {
    "planner_enabled": true,
    "replace_plan": false
  }
}

Additional Context

Relevant source references from current dev branch:

  • src/agents/sisyphus/gpt-5-4.ts:290
  • src/agents/dynamic-agent-core-sections.ts:184
  • src/agents/AGENTS.md:22
  • src/shared/agent-display-names.ts:15
  • src/plugin-handlers/agent-config-handler.ts:193-195
  • src/plugin-handlers/agent-config-handler.ts:276-333
  • src/plugin-handlers/plan-model-inheritance.ts:13-26
  • src/plugin-handlers/config-handler.test.ts:379-415
  • src/tools/delegate-task/tools.test.ts:3284-3297

Operating System

macOS

OpenCode Version

Unknown from this local check

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions