We're sorry but this app doesn't work properly without JavaScript enabled. Please enable it to continue.

This lesson's interactive features are locked, please to keep using them

Specialized Tools

It's tempting to think:

Bash can do almost anything, so what's with all these specialized tools like webfetch and read?! Why not just curl and cat?

In practice, specialized tools are nice because:

  • They give the model a cleaner interface.
  • You can control their availability and versioning in the agent.
  • They return more structured output.
  • They let you control permissions more tightly.

In other words, the agent's developers can shape a tool specifically for coding work. For example, webfetch:

  • Can convert HTML responses into Markdown, which is MUCH more token-efficient
  • Is permission-aware
  • Has built-in timeouts and size guards

As another example, OpenCode's grep tool is not just the Unix grep command or even the modern ripgrep.

It does use ripgrep under the hood, but it's also permission-aware, workspace-aware, and returns results in a shape that's better for the model.

Bash Is the Fallback

All that said, specialized tools are not a replacement for the shell tool. Your shell is still the critical escape hatch. It's how your agent can do seemingly anything on your command line, even when no dedicated tool exists.

Assignment

Tell OpenCode to find and fix the typo in unexpected charcter in Sloperator's error messages. Watch which tool it uses to locate the text.

Then tell OpenCode to run and submit the CLI tests from the project root.