Skip to main content

Introduction

Different agent CLIs expose different tool surfaces. In OpenReward, you can expose agent-native tool surfaces server-side, backed by your environment’s sandbox. When a session is created with a toolset, the agent sees the exact tools it expects and every tool call executes against the sandbox.

How Toolsets Compose into Sessions

Harness toolsets are session-scoped: they are passed when creating a session and their tools are merged with the environment’s own tools. The openreward package includes a registry of built-in harness toolsets that can be referenced by name:
When a session toolset defines a tool with the same name as an environment tool, the toolset tool takes precedence. A warning is logged for each shadowed tool. This lets harness toolsets override environment-level bash, read, etc. with their agent-specific implementations.

Sandbox Requirement

All harness toolsets extend the Toolset base class, which requires the environment to have a self.sandbox attribute. When the toolset is instantiated against an environment, it automatically extracts self.sandbox and uses it for all tool executions. If you’re building an environment that supports harness toolsets, ensure your environment sets up a sandbox:
When a client creates a session with toolset="claude-code", the ClaudeCodeToolset is instantiated with this environment and gains access to self.sandbox. All its tools (bash, read, write, etc.) execute commands against that sandbox.

Available Harness Toolsets

ClaudeCodeToolset

Name: "claude-code" · Tools: 7 Mirrors the Claude Code CLI’s built-in tool surface. Tool descriptions are sourced from Claude Code’s internal prompts.

CodexToolset

Name: "codex" · Tools: 1 Codex prefers a single shell tool over discrete file tools. All file operations are done through bash.

GeminiCliToolset

Name: "gemini-cli" · Tools: 8 Matches the upstream Gemini CLI tool surface. Uses Gemini-specific tool names like run_shell_command and replace.

OpenClawToolset

Name: "openclaw" · Tools: 6 Exposes the OpenClaw coding tool surface, including background process management and structured patch application.

HermesToolset

Name: "hermes" · Tools: 5 Exposes the Hermes Agent tool surface from Nous Research. Supports both targeted string replacement and V4A multi-file patches.

Tool Comparison

Example: Full Environment with Harness Toolset Support

Here is a complete environment that supports harness toolsets. The environment defines its own task-specific tools (submit_answer), while the harness toolset provides the agent’s coding tools:
Clients can then evaluate this environment with any harness toolset:
Or with firehorse from the command line:

Next Steps

Using Toolsets

Learn about document toolsets (PDF, Excel, Word, PowerPoint)

Building Agentic Environments

Create sandbox-based environments from scratch

Harness Quickstart

Run agent harnesses with Firehorse

Sandbox Providers

Choose a sandbox provider for your environments