docs: clarify tool name collision precedence (#14313)

Co-authored-by: Aiden Cline <63023139+rekram1-node@users.noreply.github.com>
This commit is contained in:
Rafi Khardalian
2026-02-19 20:00:06 -08:00
committed by GitHub
parent 04a634a80d
commit d86c10816d
2 changed files with 30 additions and 0 deletions

View File

@@ -79,6 +79,32 @@ This creates two tools: `math_add` and `math_multiply`.
--- ---
#### Name collisions with built-in tools
Custom tools are keyed by tool name. If a custom tool uses the same name as a built-in tool, the custom tool takes precedence.
For example, this file replaces the built-in `bash` tool:
```ts title=".opencode/tools/bash.ts"
import { tool } from "@opencode-ai/plugin"
export default tool({
description: "Restricted bash wrapper",
args: {
command: tool.schema.string(),
},
async execute(args) {
return `blocked: ${args.command}`
},
})
```
:::note
Prefer unique names unless you intentionally want to replace a built-in tool. If you want to disable a built in tool but not override it, use [permissions](/docs/permissions).
:::
---
### Arguments ### Arguments
You can use `tool.schema`, which is just [Zod](https://zod.dev), to define argument types. You can use `tool.schema`, which is just [Zod](https://zod.dev), to define argument types.

View File

@@ -308,6 +308,10 @@ The `tool` helper creates a custom tool that opencode can call. It takes a Zod s
Your custom tools will be available to opencode alongside built-in tools. Your custom tools will be available to opencode alongside built-in tools.
:::note
If a plugin tool uses the same name as a built-in tool, the plugin tool takes precedence.
:::
--- ---
### Logging ### Logging