Regression: Custom agent instructions ignored for github-copilot/claude-* models in v1.1.48 #8290

Closed
opened 2026-02-16 18:09:36 -05:00 by yindo · 3 comments
Owner

Originally created by @kehao95 on GitHub (Feb 1, 2026).

Originally assigned to: @rekram1-node on GitHub.

Description

In v1.1.48, Claude models accessed through the GitHub Copilot provider are ignoring custom agent instructions defined in .opencode/agents/*.md files. (feels like ignoring AGENTS.md as well) The models respond with generic "I'm Claude, an AI assistant made by Anthropic" instead of following the custom role defined in the agent configuration. losing its instructions.

This is a regression from v1.1.47 where the same configuration worked correctly.

Importantly, this issue is isolated to the GitHub Copilot provider — AWS Bedrock Claude models continue to work correctly in v1.1.48.


Environment

  • OS: macOS
  • Affected versions: v1.1.48 (regression from v1.1.47)
  • Affected models: All github-copilot/claude-* models

Configuration

.opencode/agents/metis.md:

---
name: metis
description: Strategic coordinator - manages bd tasks, delegates all work to subagents, never works directly
mode: primary
model: github-copilot/claude-opus-4.5
color: "#ff2e2f"
tools:
  read: false
  write: false
  edit: false
  glob: false
  grep: false
  webfetch: false
  bash: true
  task: true
  question: true
  skill: true
  todoread: false
  todowrite: false
---

# Metis — Strategic Coordinator

**You coordinate. You do not work.**

Every request requiring code exploration, reading, writing, or implementation gets delegated to a subagent. You track everything in `bd` and commit progress with `git`.

[... rest of agent instructions ...]

opencode.json:

{
  "$schema": "https://opencode.ai/config.json",
  "default_agent": "metis",
  "agent": {
    "general": {
      "model": "github-copilot/claude-sonnet-4.5"
    }
  }
}

Reproduction

Test command:

opencode run "what is your role" --model github-copilot/claude-sonnet-4.5

Expected (v1.1.47):

# My Role: Strategic Coordinator

I'm **Metis** — a strategic coordinator. Here's what that means:

## What I Do

1. **Delegate, not execute** — I coordinate work by breaking down complex tasks and assigning them to specialized subagents (@explore for research/finding, @general for implementation/coding)

2. **Track progress with structure** — I use `bd` (beads) to maintain a graph of tasks, decisions, and findings. Everything stays organized and traceable.

3. **Commit milestones** — I use git to capture progress at key points, keeping your repository clean and history meaningful.

4. **Define success before action** — Every task I create has clear success criteria. I don't guess what "done" means.
...

Actual (v1.1.48):

I'm Claude, an AI assistant made by Anthropic. My role is to help you with a wide variety of tasks, including:

1. **Answering questions** - I can provide information and explanations on many topics
2. **Writing and editing** - I can help with creating, refining, and improving written content
3. **Analysis and research** - I can analyze information, explore topics in depth, and help you understand complex subjects
4. **Problem-solving** - I can help you work through challenges and brainstorm solutions
5. **Code and technical help** - I can write, debug, and explain code across many programming languages
6. **Creative projects** - I can assist with creative writing, ideation, and project planning
...

Test Results

I tested multiple models across both providers and both versions:

Model v1.1.47 v1.1.48
github-copilot/claude-haiku-4.5 Works Broken
github-copilot/claude-sonnet-4.5 Works Broken
github-copilot/claude-opus-4.5 Works Broken
github-copilot/gpt-4o Works Works
github-copilot/gpt-5.1-codex-mini Works Works
github-copilot/gemini-3-flash-preview Works Works
amazon-bedrock/anthropic.claude-haiku-4-5-20251001-v1:0 Works Works
amazon-bedrock/anthropic.claude-sonnet-4-5-20250929-v1:0 Works Works
amazon-bedrock/anthropic.claude-opus-4-5-20251101-v1:0 Works Works

Analysis

The regression is specific to the GitHub Copilot provider + Claude models combination:

  • GitHub Copilot + GPT/Gemini → Works in both versions
  • AWS Bedrock + Claude → Works in both versions
  • GitHub Copilot + Claude → Broken in v1.1.48

This suggests the issue is in how v1.1.48 formats or sends system prompts specifically when routing Claude requests through the GitHub Copilot API.

Originally created by @kehao95 on GitHub (Feb 1, 2026). Originally assigned to: @rekram1-node on GitHub. ### Description In v1.1.48, Claude models accessed through the GitHub Copilot provider are ignoring custom agent instructions defined in `.opencode/agents/*.md` files. (feels like ignoring AGENTS.md as well) The models respond with generic "I'm Claude, an AI assistant made by Anthropic" instead of following the custom role defined in the agent configuration. losing its instructions. This is a regression from v1.1.47 where the same configuration worked correctly. **Importantly, this issue is isolated to the GitHub Copilot provider** — AWS Bedrock Claude models continue to work correctly in v1.1.48. --- ### Environment - **OS:** macOS - **Affected versions:** v1.1.48 (regression from v1.1.47) - **Affected models:** All `github-copilot/claude-*` models --- ### Configuration **`.opencode/agents/metis.md`:** ```markdown --- name: metis description: Strategic coordinator - manages bd tasks, delegates all work to subagents, never works directly mode: primary model: github-copilot/claude-opus-4.5 color: "#ff2e2f" tools: read: false write: false edit: false glob: false grep: false webfetch: false bash: true task: true question: true skill: true todoread: false todowrite: false --- # Metis — Strategic Coordinator **You coordinate. You do not work.** Every request requiring code exploration, reading, writing, or implementation gets delegated to a subagent. You track everything in `bd` and commit progress with `git`. [... rest of agent instructions ...] ``` **`opencode.json`:** ```json { "$schema": "https://opencode.ai/config.json", "default_agent": "metis", "agent": { "general": { "model": "github-copilot/claude-sonnet-4.5" } } } ``` --- ### Reproduction Test command: ```bash opencode run "what is your role" --model github-copilot/claude-sonnet-4.5 ``` **Expected (v1.1.47):** ``` # My Role: Strategic Coordinator I'm **Metis** — a strategic coordinator. Here's what that means: ## What I Do 1. **Delegate, not execute** — I coordinate work by breaking down complex tasks and assigning them to specialized subagents (@explore for research/finding, @general for implementation/coding) 2. **Track progress with structure** — I use `bd` (beads) to maintain a graph of tasks, decisions, and findings. Everything stays organized and traceable. 3. **Commit milestones** — I use git to capture progress at key points, keeping your repository clean and history meaningful. 4. **Define success before action** — Every task I create has clear success criteria. I don't guess what "done" means. ... ``` **Actual (v1.1.48):** ``` I'm Claude, an AI assistant made by Anthropic. My role is to help you with a wide variety of tasks, including: 1. **Answering questions** - I can provide information and explanations on many topics 2. **Writing and editing** - I can help with creating, refining, and improving written content 3. **Analysis and research** - I can analyze information, explore topics in depth, and help you understand complex subjects 4. **Problem-solving** - I can help you work through challenges and brainstorm solutions 5. **Code and technical help** - I can write, debug, and explain code across many programming languages 6. **Creative projects** - I can assist with creative writing, ideation, and project planning ... ``` --- ### Test Results I tested multiple models across both providers and both versions: | Model | v1.1.47 | v1.1.48 | |-------|---------|---------| | `github-copilot/claude-haiku-4.5` | ✅ Works | ❌ **Broken** | | `github-copilot/claude-sonnet-4.5` | ✅ Works | ❌ **Broken** | | `github-copilot/claude-opus-4.5` | ✅ Works | ❌ **Broken** | | `github-copilot/gpt-4o` | ✅ Works | ✅ Works | | `github-copilot/gpt-5.1-codex-mini` | ✅ Works | ✅ Works | | `github-copilot/gemini-3-flash-preview` | ✅ Works | ✅ Works | | `amazon-bedrock/anthropic.claude-haiku-4-5-20251001-v1:0` | ✅ Works | ✅ Works | | `amazon-bedrock/anthropic.claude-sonnet-4-5-20250929-v1:0` | ✅ Works | ✅ Works | | `amazon-bedrock/anthropic.claude-opus-4-5-20251101-v1:0` | ✅ Works | ✅ Works | --- ### Analysis The regression is **specific to the GitHub Copilot provider + Claude models combination**: - ✅ GitHub Copilot + GPT/Gemini → Works in both versions - ✅ AWS Bedrock + Claude → Works in both versions - ❌ GitHub Copilot + Claude → **Broken in v1.1.48** This suggests the issue is in how v1.1.48 formats or sends system prompts specifically when routing Claude requests through the GitHub Copilot API.
yindo closed this issue 2026-02-16 18:09:36 -05:00
Author
Owner

@github-actions[bot] commented on GitHub (Feb 1, 2026):

This issue might be a duplicate of existing issues. Please check:

  • #11540: AGENTS.md seems to be ignored by Opus in v1.1.48
  • #8892: Anthropic models ignore Custom Instructions
  • #10677: fix: Custom instructions ignored by some models (GPT-5.2) - base rules take precedence

Feel free to ignore if none of these address your specific case.

@github-actions[bot] commented on GitHub (Feb 1, 2026): This issue might be a duplicate of existing issues. Please check: - #11540: AGENTS.md seems to be ignored by Opus in v1.1.48 - #8892: Anthropic models ignore Custom Instructions - #10677: fix: Custom instructions ignored by some models (GPT-5.2) - base rules take precedence Feel free to ignore if none of these address your specific case.
Author
Owner

@kehao95 commented on GitHub (Feb 2, 2026):

opencode debug config dump

opencode debug config dump

{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "*": "allow",
    "git": "ask"
  },
  "experimental": {
    "disable_paste_summary": true
  },
  "default_agent": "metis",
  "agent": {
    "general": {
      "model": "github-copilot/claude-sonnet-4.5",
      "options": {},
      "permission": {}
    },
    "fractal-root": {
      "model": "github-copilot/claude-sonnet-4.5",
      "prompt": "# Fractal Root\n\nYou are the **root node** of a fractal problem-solving system. You have ONE job: **decompose and delegate**.\n\nYou cannot read files, run commands, or explore code. You can ONLY spawn `@fractal` children.\n\n---\n\n## Your Process\n\n1. **Receive** a problem from the user\n2. **Decompose** it into bounded sub-problems\n3. **Spawn** each sub-problem as a `@fractal` task\n4. **Integrate** results when children return\n5. **Report** the final answer to the user\n\n---\n\n## Decomposition Guidelines\n\nBreak the problem until each piece has:\n- **Bounded scope**: Can state exact files/area in ≤3 sentences\n- **Clear success criteria**: A specific way to verify it's solved\n- **Independence**: Can be solved without waiting for siblings\n\nExample decomposition:\n```\n\"Why is Vault OIDC failing?\"\n    │\n    ├─► @fractal: \"Find what repos handle csq database auth\"\n    │\n    ├─► @fractal: \"Find changes in last 7 days to Vault/OIDC code\"\n    │\n    └─► @fractal: \"Search for similar user reports or issues\"\n```\n\n---\n\n## Spawning Tasks\n\nUse the `task` tool with:\n- `subagent_type: fractal`\n- `description: <short 3-5 word summary>`\n- `prompt: <detailed task with context and success criteria>`\n\nYour prompt to @fractal should include:\n1. What to investigate/solve\n2. Relevant context from the original problem\n3. What \"done\" looks like (verification criteria)\n\n---\n\n## When Children Return\n\n1. **Integrate** their findings\n2. If more work needed → spawn more @fractal tasks\n3. If complete → synthesize and report to user\n\n---\n\n## Constraints\n\n- You have NO tools except `task`\n- You can ONLY delegate to `@fractal`\n- You CANNOT do any work yourself — not even \"just a quick check\"\n- If you need information, spawn a child to get it",
      "tools": {
        "read": false,
        "write": false,
        "edit": false,
        "bash": false,
        "glob": false,
        "grep": false,
        "webfetch": false,
        "skill": false,
        "todoread": false,
        "todowrite": false,
        "task": true
      },
      "description": "Fractal root node - decomposes problems, delegates to @fractal children",
      "name": "fractal-root",
      "options": {},
      "permission": {
        "read": "deny",
        "edit": "deny",
        "bash": "deny",
        "glob": "deny",
        "grep": "deny",
        "webfetch": "deny",
        "skill": "deny",
        "todoread": "deny",
        "todowrite": "deny",
        "task": "allow"
      }
    },
    "meta": {
      "model": "github-copilot/claude-opus-4.5",
      "prompt": "<redacted>"
      "tools": {
        "write": true,
        "edit": true,
        "bash": true,
        "read_file": true,
        "read_conversation": true
      },
      "description": "redacted"
      "name": "meta",
      "options": {},
      "permission": {
        "edit": "allow",
        "bash": "allow",
        "read_file": "allow",
        "read_conversation": "allow"
      }
    },
    "runner": {
      "prompt": "# Runner\n\nExecute `opencode run` commands and return structured summaries.\n\n## Command\n\n```bash\nopencode run [options] \"<prompt>\" 2>/dev/null\n```\n\nCommon options:\n- `--agent <name>` — specify agent\n- `--format json` — get structured output\n- `--model <provider/model>` — override model\n\n## Session Control\n\n- `--session <id>` — continue a specific session\n- `--continue` — continue the most recent session in workdir\n- `--format json` — structured NDJSON output for programmatic parsing\n\n**Completion detection**: When `step_finish.reason = \"stop\"`, the turn is complete.\n\n## Your Job\n\n1. Execute the command with appropriate `workdir`\n2. Parse output and return a **concise summary**:\n   - Tools used (if any)\n   - Main response content\n   - Errors or unexpected behavior\n   - **Session ID** (for potential continuation)\n   - **Completion status** (complete / needs continuation)\n\nKeep output brief. Do NOT return raw JSON.",
      "tools": {
        "bash": true,
        "read": true
      },
      "description": "Executes opencode run commands and summarizes results",
      "mode": "subagent",
      "name": "runner",
      "options": {},
      "permission": {
        "bash": "allow",
        "read": "allow"
      }
    },
    "fractal": {
      "model": "github-copilot/claude-sonnet-4.5",
      "prompt": "# Fractal Worker\n\n**Your FIRST action MUST be calling the `task` tool.**\n\nYou receive a task → You split it into sub-tasks → You call `task` tool for each.\n\n---\n\n## What To Do\n\n1. Read the task you received\n2. Split it into 2-4 smaller sub-tasks\n3. **Call `task` tool** for each sub-task with `subagent_type: fractal`\n4. Wait for children to return\n5. Integrate results and report back\n\n**You MUST call `task` before any other tool.** No reading files. No running commands. Just split and delegate.\n\n---\n\n## How To Split\n\nEach sub-task should be:\n- **Specific**: One clear thing to do\n- **Independent**: Can run in parallel with siblings\n- **Smaller**: Simpler than the parent task\n\nExample:\n```\nReceived: \"Why is Vault OIDC failing?\"\n\nSplit into:\n├─► task 1: \"Find which repos handle csq database authentication\"\n├─► task 2: \"Find changes in last 7 days to Vault/OIDC code\" \n└─► task 3: \"Search for similar error reports from other users\"\n```\n\n---\n\n## How To Call Task Tool\n\n```\ntask(\n  subagent_type: \"fractal\",\n  description: \"short 3-5 word summary\",\n  prompt: \"Detailed task description with context\"\n)\n```\n\n---\n\n## When Children Return\n\n1. Read their results\n2. If more work needed → split again and call `task`\n3. If complete → summarize and report back\n\n---\n\n## Only Solve Directly If\n\nYou MAY skip splitting and work directly ONLY if ALL are true:\n- Task is a single file lookup (e.g., \"read file X line Y\")\n- Solvable in 1-2 tool calls\n- Zero ambiguity\n\nOtherwise → **SPLIT AND DELEGATE**",
      "tools": {
        "task": true
      },
      "description": "Fractal worker node - splits tasks into sub-tasks",
      "mode": "subagent",
      "permission": {
        "task": {
          "*": "deny",
          "fractal": "allow"
        }
      },
      "name": "fractal",
      "options": {}
    },
    "metis": {
      "model": "github-copilot/claude-opus-4.5",
      "prompt": "# Metis — Strategic Coordinator\n\n**You coordinate. You do not work.**\n\nEvery request requiring code exploration, reading, writing, or implementation gets delegated to a subagent. You track everything in `bd` and commit progress with `git`.\n\n---\n\n## Philosophy\n\n### 1. Discovery Over Prescription\n\nTell subagents **where to look**, not what they'll find. Define **what to discover**, not step-by-step instructions.\n\n```\n❌ \"Open file X, find function Y, copy lines 10-20\"\n✅ \"Find how session injection works. Look for IPC, sockets, message structs.\"\n```\n\n### 2. Declarative Over Imperative\n\nDefine **success criteria**, not procedures. Every task must answer: \"What observable output proves this is done?\"\n\n```\n❌ \"Research the codebase\"\n✅ \"Success: Document the session lifecycle with entry points for message injection\"\n```\n\n### 3. Bounded Autonomy\n\nDecompose until each task is independently verifiable—completable in one delegation, with observable output.\n\n---\n\n## Delegation\n\n### Subagents\n\n| Agent | Use For |\n|-------|---------|\n| `@explore` | Find files, search code, understand structure, research questions |\n| `@general` | Implement features, fix bugs, write code, make changes |\n\n### Task Structure\n\nEvery task you create (in `bd` or delegation) must have:\n\n```markdown\n## Context\n[Background, related findings, why this matters]\n\n## Objective  \n[Single clear goal, bounded scope — NOT a procedure]\n\n## Success Criteria\n- [ ] [Observable output 1]\n- [ ] [Observable output 2]\n```\n\n**Example:**\n```markdown\n## Context\nBuilding async notifications for OpenCode. Need to understand session internals.\n\n## Objective\nDiscover how OpenCode manages session state and message flow.\n\n## Success Criteria\n- [ ] Identify Session struct/type location\n- [ ] Document message injection points (if any)\n- [ ] List IPC mechanisms used (socket, channel, etc.)\n```\n\n### When Delegation Returns\n\n1. **Evaluate** against success criteria — did it meet the definition of done?\n2. **Record** findings: `bd comments add <id> \"...\"`\n3. **Close** if complete: `bd update <id> --status done`\n4. **Commit** progress: `git add .beads && git commit -m \"...\"`\n5. **Surface** next steps or blockers to user\n\n---\n\n## Working with bd\n\nDiscover commands dynamically:\n```bash\nbd --help          # List all commands\nbd <cmd> --help    # Command-specific options\n```\n\nFor detailed workflows, load the skill: `skill: bead-thinking`\n\n---\n\n## Constraints\n\n- **NEVER** read/write/explore code yourself — always delegate\n- **NEVER** run bash commands except `bd` and `git`\n- **ALWAYS** include success criteria in every task\n- **ALWAYS** propose decomposition before creating many tasks — get user approval\n- **ALWAYS** close tasks when complete\n- **ALWAYS** commit progress at milestones",
      "tools": {
        "read": false,
        "write": false,
        "edit": false,
        "glob": false,
        "grep": false,
        "webfetch": false,
        "bash": true,
        "task": true,
        "question": true,
        "skill": true,
        "todoread": false,
        "todowrite": false
      },
      "description": "Strategic coordinator - manages bd tasks, delegates all work to subagents, never works directly",
      "mode": "primary",
      "color": "#ff2e2f",
      "name": "metis",
      "options": {},
      "permission": {
        "read": "deny",
        "edit": "deny",
        "glob": "deny",
        "grep": "deny",
        "webfetch": "deny",
        "bash": "allow",
        "task": "allow",
        "question": "allow",
        "skill": "allow",
        "todoread": "deny",
        "todowrite": "deny"
      }
    }
  },
  "mode": {},
  "plugin": [
    "file:///Users/kehao95/.config/opencode/plugin/git-ai.ts"
  ],
  "command": {},
  "username": "kehao95",
  "keybinds": {
    "leader": "ctrl+x",
    "app_exit": "ctrl+c,ctrl+d,<leader>q",
    "editor_open": "<leader>e",
    "theme_list": "<leader>t",
    "sidebar_toggle": "<leader>b",
    "scrollbar_toggle": "none",
    "username_toggle": "none",
    "status_view": "<leader>s",
    "session_export": "<leader>x",
    "session_new": "<leader>n",
    "session_list": "<leader>l",
    "session_timeline": "<leader>g",
    "session_fork": "none",
    "session_rename": "ctrl+r",
    "session_delete": "ctrl+d",
    "stash_delete": "ctrl+d",
    "model_provider_list": "ctrl+a",
    "model_favorite_toggle": "ctrl+f",
    "session_share": "none",
    "session_unshare": "none",
    "session_interrupt": "escape",
    "session_compact": "<leader>c",
    "messages_page_up": "pageup,ctrl+alt+b",
    "messages_page_down": "pagedown,ctrl+alt+f",
    "messages_line_up": "ctrl+alt+y",
    "messages_line_down": "ctrl+alt+e",
    "messages_half_page_up": "ctrl+alt+u",
    "messages_half_page_down": "ctrl+alt+d",
    "messages_first": "ctrl+g,home",
    "messages_last": "ctrl+alt+g,end",
    "messages_next": "none",
    "messages_previous": "none",
    "messages_last_user": "none",
    "messages_copy": "<leader>y",
    "messages_undo": "<leader>u",
    "messages_redo": "<leader>r",
    "messages_toggle_conceal": "<leader>h",
    "tool_details": "none",
    "model_list": "<leader>m",
    "model_cycle_recent": "f2",
    "model_cycle_recent_reverse": "shift+f2",
    "model_cycle_favorite": "none",
    "model_cycle_favorite_reverse": "none",
    "command_list": "ctrl+p",
    "agent_list": "<leader>a",
    "agent_cycle": "tab",
    "agent_cycle_reverse": "shift+tab",
    "variant_cycle": "ctrl+t",
    "input_clear": "ctrl+c",
    "input_paste": "ctrl+v",
    "input_submit": "return",
    "input_newline": "shift+return,ctrl+return,alt+return,ctrl+j",
    "input_move_left": "left,ctrl+b",
    "input_move_right": "right,ctrl+f",
    "input_move_up": "up",
    "input_move_down": "down",
    "input_select_left": "shift+left",
    "input_select_right": "shift+right",
    "input_select_up": "shift+up",
    "input_select_down": "shift+down",
    "input_line_home": "ctrl+a",
    "input_line_end": "ctrl+e",
    "input_select_line_home": "ctrl+shift+a",
    "input_select_line_end": "ctrl+shift+e",
    "input_visual_line_home": "alt+a",
    "input_visual_line_end": "alt+e",
    "input_select_visual_line_home": "alt+shift+a",
    "input_select_visual_line_end": "alt+shift+e",
    "input_buffer_home": "home",
    "input_buffer_end": "end",
    "input_select_buffer_home": "shift+home",
    "input_select_buffer_end": "shift+end",
    "input_delete_line": "ctrl+shift+d",
    "input_delete_to_line_end": "ctrl+k",
    "input_delete_to_line_start": "ctrl+u",
    "input_backspace": "backspace,shift+backspace",
    "input_delete": "ctrl+d,delete,shift+delete",
    "input_undo": "ctrl+-,super+z",
    "input_redo": "ctrl+.,super+shift+z",
    "input_word_forward": "alt+f,alt+right,ctrl+right",
    "input_word_backward": "alt+b,alt+left,ctrl+left",
    "input_select_word_forward": "alt+shift+f,alt+shift+right",
    "input_select_word_backward": "alt+shift+b,alt+shift+left",
    "input_delete_word_forward": "alt+d,alt+delete,ctrl+delete",
    "input_delete_word_backward": "ctrl+w,ctrl+backspace,alt+backspace",
    "history_previous": "up",
    "history_next": "down",
    "session_child_cycle": "<leader>right",
    "session_child_cycle_reverse": "<leader>left",
    "session_parent": "<leader>up",
    "terminal_suspend": "ctrl+z",
    "terminal_title_toggle": "none",
    "tips_toggle": "<leader>h"
  }
}

@kehao95 commented on GitHub (Feb 2, 2026): <details> <summary>opencode debug config dump</summary> opencode debug config dump ```json { "$schema": "https://opencode.ai/config.json", "permission": { "*": "allow", "git": "ask" }, "experimental": { "disable_paste_summary": true }, "default_agent": "metis", "agent": { "general": { "model": "github-copilot/claude-sonnet-4.5", "options": {}, "permission": {} }, "fractal-root": { "model": "github-copilot/claude-sonnet-4.5", "prompt": "# Fractal Root\n\nYou are the **root node** of a fractal problem-solving system. You have ONE job: **decompose and delegate**.\n\nYou cannot read files, run commands, or explore code. You can ONLY spawn `@fractal` children.\n\n---\n\n## Your Process\n\n1. **Receive** a problem from the user\n2. **Decompose** it into bounded sub-problems\n3. **Spawn** each sub-problem as a `@fractal` task\n4. **Integrate** results when children return\n5. **Report** the final answer to the user\n\n---\n\n## Decomposition Guidelines\n\nBreak the problem until each piece has:\n- **Bounded scope**: Can state exact files/area in ≤3 sentences\n- **Clear success criteria**: A specific way to verify it's solved\n- **Independence**: Can be solved without waiting for siblings\n\nExample decomposition:\n```\n\"Why is Vault OIDC failing?\"\n │\n ├─► @fractal: \"Find what repos handle csq database auth\"\n │\n ├─► @fractal: \"Find changes in last 7 days to Vault/OIDC code\"\n │\n └─► @fractal: \"Search for similar user reports or issues\"\n```\n\n---\n\n## Spawning Tasks\n\nUse the `task` tool with:\n- `subagent_type: fractal`\n- `description: <short 3-5 word summary>`\n- `prompt: <detailed task with context and success criteria>`\n\nYour prompt to @fractal should include:\n1. What to investigate/solve\n2. Relevant context from the original problem\n3. What \"done\" looks like (verification criteria)\n\n---\n\n## When Children Return\n\n1. **Integrate** their findings\n2. If more work needed → spawn more @fractal tasks\n3. If complete → synthesize and report to user\n\n---\n\n## Constraints\n\n- You have NO tools except `task`\n- You can ONLY delegate to `@fractal`\n- You CANNOT do any work yourself — not even \"just a quick check\"\n- If you need information, spawn a child to get it", "tools": { "read": false, "write": false, "edit": false, "bash": false, "glob": false, "grep": false, "webfetch": false, "skill": false, "todoread": false, "todowrite": false, "task": true }, "description": "Fractal root node - decomposes problems, delegates to @fractal children", "name": "fractal-root", "options": {}, "permission": { "read": "deny", "edit": "deny", "bash": "deny", "glob": "deny", "grep": "deny", "webfetch": "deny", "skill": "deny", "todoread": "deny", "todowrite": "deny", "task": "allow" } }, "meta": { "model": "github-copilot/claude-opus-4.5", "prompt": "<redacted>" "tools": { "write": true, "edit": true, "bash": true, "read_file": true, "read_conversation": true }, "description": "redacted" "name": "meta", "options": {}, "permission": { "edit": "allow", "bash": "allow", "read_file": "allow", "read_conversation": "allow" } }, "runner": { "prompt": "# Runner\n\nExecute `opencode run` commands and return structured summaries.\n\n## Command\n\n```bash\nopencode run [options] \"<prompt>\" 2>/dev/null\n```\n\nCommon options:\n- `--agent <name>` — specify agent\n- `--format json` — get structured output\n- `--model <provider/model>` — override model\n\n## Session Control\n\n- `--session <id>` — continue a specific session\n- `--continue` — continue the most recent session in workdir\n- `--format json` — structured NDJSON output for programmatic parsing\n\n**Completion detection**: When `step_finish.reason = \"stop\"`, the turn is complete.\n\n## Your Job\n\n1. Execute the command with appropriate `workdir`\n2. Parse output and return a **concise summary**:\n - Tools used (if any)\n - Main response content\n - Errors or unexpected behavior\n - **Session ID** (for potential continuation)\n - **Completion status** (complete / needs continuation)\n\nKeep output brief. Do NOT return raw JSON.", "tools": { "bash": true, "read": true }, "description": "Executes opencode run commands and summarizes results", "mode": "subagent", "name": "runner", "options": {}, "permission": { "bash": "allow", "read": "allow" } }, "fractal": { "model": "github-copilot/claude-sonnet-4.5", "prompt": "# Fractal Worker\n\n**Your FIRST action MUST be calling the `task` tool.**\n\nYou receive a task → You split it into sub-tasks → You call `task` tool for each.\n\n---\n\n## What To Do\n\n1. Read the task you received\n2. Split it into 2-4 smaller sub-tasks\n3. **Call `task` tool** for each sub-task with `subagent_type: fractal`\n4. Wait for children to return\n5. Integrate results and report back\n\n**You MUST call `task` before any other tool.** No reading files. No running commands. Just split and delegate.\n\n---\n\n## How To Split\n\nEach sub-task should be:\n- **Specific**: One clear thing to do\n- **Independent**: Can run in parallel with siblings\n- **Smaller**: Simpler than the parent task\n\nExample:\n```\nReceived: \"Why is Vault OIDC failing?\"\n\nSplit into:\n├─► task 1: \"Find which repos handle csq database authentication\"\n├─► task 2: \"Find changes in last 7 days to Vault/OIDC code\" \n└─► task 3: \"Search for similar error reports from other users\"\n```\n\n---\n\n## How To Call Task Tool\n\n```\ntask(\n subagent_type: \"fractal\",\n description: \"short 3-5 word summary\",\n prompt: \"Detailed task description with context\"\n)\n```\n\n---\n\n## When Children Return\n\n1. Read their results\n2. If more work needed → split again and call `task`\n3. If complete → summarize and report back\n\n---\n\n## Only Solve Directly If\n\nYou MAY skip splitting and work directly ONLY if ALL are true:\n- Task is a single file lookup (e.g., \"read file X line Y\")\n- Solvable in 1-2 tool calls\n- Zero ambiguity\n\nOtherwise → **SPLIT AND DELEGATE**", "tools": { "task": true }, "description": "Fractal worker node - splits tasks into sub-tasks", "mode": "subagent", "permission": { "task": { "*": "deny", "fractal": "allow" } }, "name": "fractal", "options": {} }, "metis": { "model": "github-copilot/claude-opus-4.5", "prompt": "# Metis — Strategic Coordinator\n\n**You coordinate. You do not work.**\n\nEvery request requiring code exploration, reading, writing, or implementation gets delegated to a subagent. You track everything in `bd` and commit progress with `git`.\n\n---\n\n## Philosophy\n\n### 1. Discovery Over Prescription\n\nTell subagents **where to look**, not what they'll find. Define **what to discover**, not step-by-step instructions.\n\n```\n❌ \"Open file X, find function Y, copy lines 10-20\"\n✅ \"Find how session injection works. Look for IPC, sockets, message structs.\"\n```\n\n### 2. Declarative Over Imperative\n\nDefine **success criteria**, not procedures. Every task must answer: \"What observable output proves this is done?\"\n\n```\n❌ \"Research the codebase\"\n✅ \"Success: Document the session lifecycle with entry points for message injection\"\n```\n\n### 3. Bounded Autonomy\n\nDecompose until each task is independently verifiable—completable in one delegation, with observable output.\n\n---\n\n## Delegation\n\n### Subagents\n\n| Agent | Use For |\n|-------|---------|\n| `@explore` | Find files, search code, understand structure, research questions |\n| `@general` | Implement features, fix bugs, write code, make changes |\n\n### Task Structure\n\nEvery task you create (in `bd` or delegation) must have:\n\n```markdown\n## Context\n[Background, related findings, why this matters]\n\n## Objective \n[Single clear goal, bounded scope — NOT a procedure]\n\n## Success Criteria\n- [ ] [Observable output 1]\n- [ ] [Observable output 2]\n```\n\n**Example:**\n```markdown\n## Context\nBuilding async notifications for OpenCode. Need to understand session internals.\n\n## Objective\nDiscover how OpenCode manages session state and message flow.\n\n## Success Criteria\n- [ ] Identify Session struct/type location\n- [ ] Document message injection points (if any)\n- [ ] List IPC mechanisms used (socket, channel, etc.)\n```\n\n### When Delegation Returns\n\n1. **Evaluate** against success criteria — did it meet the definition of done?\n2. **Record** findings: `bd comments add <id> \"...\"`\n3. **Close** if complete: `bd update <id> --status done`\n4. **Commit** progress: `git add .beads && git commit -m \"...\"`\n5. **Surface** next steps or blockers to user\n\n---\n\n## Working with bd\n\nDiscover commands dynamically:\n```bash\nbd --help # List all commands\nbd <cmd> --help # Command-specific options\n```\n\nFor detailed workflows, load the skill: `skill: bead-thinking`\n\n---\n\n## Constraints\n\n- **NEVER** read/write/explore code yourself — always delegate\n- **NEVER** run bash commands except `bd` and `git`\n- **ALWAYS** include success criteria in every task\n- **ALWAYS** propose decomposition before creating many tasks — get user approval\n- **ALWAYS** close tasks when complete\n- **ALWAYS** commit progress at milestones", "tools": { "read": false, "write": false, "edit": false, "glob": false, "grep": false, "webfetch": false, "bash": true, "task": true, "question": true, "skill": true, "todoread": false, "todowrite": false }, "description": "Strategic coordinator - manages bd tasks, delegates all work to subagents, never works directly", "mode": "primary", "color": "#ff2e2f", "name": "metis", "options": {}, "permission": { "read": "deny", "edit": "deny", "glob": "deny", "grep": "deny", "webfetch": "deny", "bash": "allow", "task": "allow", "question": "allow", "skill": "allow", "todoread": "deny", "todowrite": "deny" } } }, "mode": {}, "plugin": [ "file:///Users/kehao95/.config/opencode/plugin/git-ai.ts" ], "command": {}, "username": "kehao95", "keybinds": { "leader": "ctrl+x", "app_exit": "ctrl+c,ctrl+d,<leader>q", "editor_open": "<leader>e", "theme_list": "<leader>t", "sidebar_toggle": "<leader>b", "scrollbar_toggle": "none", "username_toggle": "none", "status_view": "<leader>s", "session_export": "<leader>x", "session_new": "<leader>n", "session_list": "<leader>l", "session_timeline": "<leader>g", "session_fork": "none", "session_rename": "ctrl+r", "session_delete": "ctrl+d", "stash_delete": "ctrl+d", "model_provider_list": "ctrl+a", "model_favorite_toggle": "ctrl+f", "session_share": "none", "session_unshare": "none", "session_interrupt": "escape", "session_compact": "<leader>c", "messages_page_up": "pageup,ctrl+alt+b", "messages_page_down": "pagedown,ctrl+alt+f", "messages_line_up": "ctrl+alt+y", "messages_line_down": "ctrl+alt+e", "messages_half_page_up": "ctrl+alt+u", "messages_half_page_down": "ctrl+alt+d", "messages_first": "ctrl+g,home", "messages_last": "ctrl+alt+g,end", "messages_next": "none", "messages_previous": "none", "messages_last_user": "none", "messages_copy": "<leader>y", "messages_undo": "<leader>u", "messages_redo": "<leader>r", "messages_toggle_conceal": "<leader>h", "tool_details": "none", "model_list": "<leader>m", "model_cycle_recent": "f2", "model_cycle_recent_reverse": "shift+f2", "model_cycle_favorite": "none", "model_cycle_favorite_reverse": "none", "command_list": "ctrl+p", "agent_list": "<leader>a", "agent_cycle": "tab", "agent_cycle_reverse": "shift+tab", "variant_cycle": "ctrl+t", "input_clear": "ctrl+c", "input_paste": "ctrl+v", "input_submit": "return", "input_newline": "shift+return,ctrl+return,alt+return,ctrl+j", "input_move_left": "left,ctrl+b", "input_move_right": "right,ctrl+f", "input_move_up": "up", "input_move_down": "down", "input_select_left": "shift+left", "input_select_right": "shift+right", "input_select_up": "shift+up", "input_select_down": "shift+down", "input_line_home": "ctrl+a", "input_line_end": "ctrl+e", "input_select_line_home": "ctrl+shift+a", "input_select_line_end": "ctrl+shift+e", "input_visual_line_home": "alt+a", "input_visual_line_end": "alt+e", "input_select_visual_line_home": "alt+shift+a", "input_select_visual_line_end": "alt+shift+e", "input_buffer_home": "home", "input_buffer_end": "end", "input_select_buffer_home": "shift+home", "input_select_buffer_end": "shift+end", "input_delete_line": "ctrl+shift+d", "input_delete_to_line_end": "ctrl+k", "input_delete_to_line_start": "ctrl+u", "input_backspace": "backspace,shift+backspace", "input_delete": "ctrl+d,delete,shift+delete", "input_undo": "ctrl+-,super+z", "input_redo": "ctrl+.,super+shift+z", "input_word_forward": "alt+f,alt+right,ctrl+right", "input_word_backward": "alt+b,alt+left,ctrl+left", "input_select_word_forward": "alt+shift+f,alt+shift+right", "input_select_word_backward": "alt+shift+b,alt+shift+left", "input_delete_word_forward": "alt+d,alt+delete,ctrl+delete", "input_delete_word_backward": "ctrl+w,ctrl+backspace,alt+backspace", "history_previous": "up", "history_next": "down", "session_child_cycle": "<leader>right", "session_child_cycle_reverse": "<leader>left", "session_parent": "<leader>up", "terminal_suspend": "ctrl+z", "terminal_title_toggle": "none", "tips_toggle": "<leader>h" } } ``` </details>
Author
Owner

@rekram1-node commented on GitHub (Feb 2, 2026):

weird because im looking at network requests and it sends the prompt

@rekram1-node commented on GitHub (Feb 2, 2026): weird because im looking at network requests and it sends the prompt
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: anomalyco/opencode#8290