Skip to content

[FEATURE]: System prompt mode switcher (Default/Light) #15457

Closed as not planned
Closed as not planned

Description

@kshnkvn

Feature hasn't been suggested before.

  • I have verified this feature I'm about to request hasn't been suggested before.

Describe the enhancement you want to request

Problem

The current system prompts are heavy and optimized for frontier models.
This causes issues with:

Proposal

Add a system prompt mode setting with initial options:

  • Default: current per-model prompts (anthropic.txt, gemini.txt, etc.) — no changes
  • Light: minimal prompt with only essential info: tools, basic safety rules, environment

The current proposal covers several things at once:

  • Non-breaking: Default behavior unchanged
  • Extensible: Opens path for future custom mode where users provide their own prompt
  • Addresses multiple issues without requiring prompt rewrites

Configuration

  • Via settings menu (Ctrl+P → Settings)
  • Via opencode.json:
{
   "prompt": {
     "mode": "light"
   }
 }

Related issues

Activity

  1. added
    discussionUsed for feature requests, proposals, ideas, etc. Open discussion
    on Feb 28, 2026
  2. added
    coreAnything pertaining to core functionality of the application (opencode server stuff)
    on Feb 28, 2026
  3. m-nelly commented on Mar 3, 2026

    @m-nelly

    I'm running a local model with 32k context and it works really well for my use case; however, OpenCode's system prompt is consuming ~10% of that context window. If we could get a configuration option to replace the default system prompt with the agent/model prompt we specify, that would solve this and all of the other related issues.

  4. assigned and unassigned on Apr 26, 2026
  5. removed
    discussionUsed for feature requests, proposals, ideas, etc. Open discussion
    coreAnything pertaining to core functionality of the application (opencode server stuff)
    on May 3, 2026
  6. okuyam2y commented on Jun 14, 2026

    @okuyam2y

    I opened #32315 before seeing this; it's the same mechanism from the opposite end, so I'll continue here and close mine as a duplicate.

    This issue frames the switcher around a Light mode for small/local models. The same opt-in selector also solves the high-capability end — and #10927 (overspecification degrading reasoning in capable models), which is cited above, is exactly the case I have data for.

    I prototyped a Frontier mode (the same idea as Light, just a different target): a prompt variant that pushes GPT/Claude-class models toward root-cause reasoning instead of "looks fine" conclusions. Measured with a within-session controlled A/B on a public code-review task (planetiler, last 10 commits, known seeded regressions) — same model, same agent prompt, same session, only the system prompt swapped:

    bug (public-API silent semantic change) baseline frontier
    reservoir polygon dropped 16.7% 62.5%
    signed→unsigned comparison 16.7% 87.5%
    compareTo ordering change 0% 50%
    false positives 0 0

    ~45–71pp better recall at the same (zero) false-positive rate.

    This reinforces the case for the switcher being a general mechanism rather than a single Light mode: the same option naturally carries Light (trim for small models) and Frontier (elevate for capable models), with Default unchanged.

    I have a working branch for the Frontier end — the selector mechanism (~30 lines), two prompt files, unit tests, and an Apache-2.0 NOTICE for principles paraphrased from the Codex CLI prompts. Happy to adapt it to whatever config shape the maintainers prefer here (a mode/variant enum), or open a PR if there's interest in landing the mechanism with Default + one alternate to start.

  7. thekk1 commented on Jul 15, 2026

    @thekk1

    This would be a very welcome improvement for our local infrastrukture.

  8. violog commented on Aug 1, 2026

    @violog

    My issue #39537 is a duplicate of this. I would like a config option to disable/replace system prompt in particular. Don't see any reason for prompts to be built-in, since Opencode is an open and highly customizable tools, in contrary to competitors.

  9. justauserid commented on Sep 3, 2026

    @justauserid

    Why not just let the user nuke everything from a certain agent session? Offering this OPENCODE_DISABLE_CLAUDE_CODE only as a global setting sort of diminishes this flag's capability.

    There is a good chance a user might want all the circus and drama Calude Code has to offer on the same machine, esp. if it's a complex task (says a complex coding project or huge codebase, or both). But say another user (or the same user) at some point wants to just work with a few .txt/.md files in a directory and needs writing feedback, or so, it's absolutely bonkers in that case that OpenCode would still send something like git or node or whatever, unless the user completely shut that off via that flag.

    I see issues closer to that have been closed before #1157 #5637

  10. opencodejr commented on Oct 29, 2026

    @opencodejr
    Contributor

    Thanks for the detailed proposal! You're asking for a system prompt mode setting (Default/Light, and possibly Custom later), so smaller or local models, and people who want minimal prompting, don't pay for the full built-in prompts. Maintainers will consider it.

    In the meantime, in OpenCode v2 (2.x) the base system prompt is already short. Giving an agent its own prompt replaces the default prompt completely, and the model-specific prompts (e.g. for Claude or GPT) are then left out too:

    {
      "agent": {
        "build": {
          "prompt": "{file:./prompts/minimal.txt}"
        }
      }
    }

    See the agent prompt docs: https://opencode.ai/docs/agents/#prompt

    Related issues:

  11. neriousy commented on Nov 12, 2026

    @neriousy
    Member

    Thanks for the suggestion. This isn't something we plan to build, so closing to keep the tracker focused.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions