Skip to content

How will tool visibility be controlled after tools config is removed? #18051

Closed as not planned

Description

@cebecifaruk

Question

Hi,

I’m trying to understand the intended migration path from the deprecated tools configuration to the newer permission system.

From the documentation, it seems that:

  • tools (boolean enable/disable) is deprecated
  • permission is now the recommended configuration

However, these two mechanisms appear to control different things:

tools:

  • Determines which tools are visible to the agent (included in the tool list sent to the LLM)

permission:

  • Controls whether a tool call is allowed, denied, or requires approval

In practice this means that even if a tool is denied via permission, it is still included in the tool definitions sent to the model.

For workflows that rely on strict agent capabilities, this creates two problems:

  1. Context bloat
    Agents receive many tools they will never use, increasing prompt size.

  2. Planning noise
    The model may still consider tools that will later be blocked by permissions.

Currently the deprecated tools field is still useful because it removes unused tools from the request entirely.

Questions:

  1. Is there a planned replacement for controlling tool visibility (not just execution permissions)?
  2. Will permission: deny eventually hide tools from the LLM, or will all tools always remain exposed?
  3. If tools is eventually removed, what is the recommended way to keep agent toolsets minimal?

Example of the problem:

{
  "permission": {
    "bash": "deny"
  }
}

The bash tool is still included in the tool list sent to the model (according to what i see in the documentation), even though it cannot execute.

For multi-agent setups (planner, researcher, coder, etc.), controlling which tools are exposed to each agent is important for both security and context efficiency.

Would appreciate clarification on the intended long-term design.

Thanks!

Activity

  1. added
    coreAnything pertaining to core functionality of the application (opencode server stuff)
    on Mar 18, 2026
  2. assigned and unassigned on Apr 26, 2026
  3. cebecifaruk commented on Apr 29, 2026

    @cebecifaruk
    Author

    Any updates?

  4. removed
    coreAnything pertaining to core functionality of the application (opencode server stuff)
    on May 3, 2026
  5. SkyElianneLavoie commented on May 28, 2026

    @SkyElianneLavoie

    I really hope this doesn't get removed from OpenCode!

    We use a few MCP servers that have way too many tools, and we only want to give our agent access to a few handful of them.
    Setting "deny" on all the tools of the server doesn't fix our issue of the context getting overloaded!

    I'm confused why it's even being deprecated... permission and tools seem to do two distinct things: one declares whether an agent can use a tool, and the other declares whether it knows of the tool.

    If we still want to deprecate tools, could we add a new value to the permission config? Adding a "hidden" keyword that fully removes the tool from the agent's available tools?

  6. DasLeo commented on Jun 10, 2026

    @DasLeo

    We also have models gotten into the wrong direction simply by having tool description in their prompt.
    We def. need to keep the tools config to prevent models from jumping into implementation during the plan phase.

  7. rekram1-node commented on Jun 23, 2026

    @rekram1-node
    Collaborator

    Automated: closing question issues.

    GitHub Issues are for bug reports and feature requests only — questions / support are no longer tracked here.

    If this is a bug or feature request, please open a new issue with the appropriate template.

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