Toolsets
A toolset is a named group of related tools. Profile/session group choices and parent access limits determine the eligible inventory. The Session separately selects which tools are declared to the model and which can be called through Codemode.
Built-in Defaults
The built-in default-visible groups are:
| Toolset | Typical capability |
|---|---|
artifact | List, inspect, pin, and export session files |
web | Public web search and retrieval |
sessions | Search earlier Profile sessions |
memory | Profile memory operations |
tasks, automation | Tasks, reminders, and scheduled work |
clarify | Structured questions when input is missing |
file, terminal | File access and direct command execution |
messaging | Channel-aware messaging operations |
skills | Manage the Profile Skill library; reading uses read/bash |
subagents | Delegation, background work, and child controls |
tts | Spoken replies when TTS is configured |
These are eligible product groups, not a promise that every tool is active in every Session. The portable default active names are read, bash, edit and write; product tools may add their own default-active entries. The installed runtime may contain more groups, and credentials or backend availability can still limit them.
Inspect the Catalog
Dashboard → Tools → Built-in shows each tool's source, toolset, native definition and runtime limits. Open a row to view its definition, timeout and output budgets. This is an inventory, not the current Session's active declarations. Definitions remain read-only. Codemode has a focused settings page for Profile defaults and an explicitly selected Session; this is not a general per-tool override editor.
Dashboard does not present a general “toggle every default toolset” editor. Supported optional capabilities update their product groups. MCP configuration is independent of those groups.
Session Tool Selection
Use conversation tool flags to change a Session's selection:
anyy --tools '+codemode,+tool_search'
anyy --resume SESSION_ID --tools '+codemode,+tool_search'
anyy chat --session SESSION_ID --tools 'read,bash' "Inspect the project"
New Sessions start from the Profile defaults and any supplied flags. +name and -name change those defaults, not the tool set currently active in a resumed Session. The --resume example above can enable Codemode in an existing Session while it is idle and has no pending input; a new Session is not required. Without an override, a live Session keeps its current selection. To change only Codemode while preserving the Session's other active names and rules, use its Dashboard settings instead of reapplying the CLI selection.
Tool-selection rules supplied through flags stay on the live Session. They neither change the Profile's config.yaml nor persist across a Gateway restart. Previously recorded active names may be restored from the selected conversation branch under the current Profile rules. Use an explicit idle attachment again when you need the same inclusion, exclusion or no-tools rules.
Tool selection cannot expand the parent, actor/session or delivery scope. A previously saved schema/name list is historical evidence and no longer a duplicate gate against freshly registered or redefined handles.
Codemode and Tool Search
codemode runs raw JavaScript using the current Session's callable tools. tool_search finds inactive codemode/deferred tools and activates matches for the next model request. Both built-ins are registered inactive; explicit selection or applicable MCP auto-activation can enable them. They are independent: changing Codemode does not also change tool search or the Session's Role.
Open Dashboard → Tools → Built-in → codemode to save Profile defaults and the shared on/only mode. Saving there publishes settings for the next preparation without a restart. It does not reselect an existing Session; choose that Session separately and use Apply to Session while idle with no pending input. Codemode settings explains restrictions and the difference between the two actions.
You can also edit the Profile's config.yaml manually, for example:
default_tools:
- "+codemode"
- "+tool_search"
codemode:
mode: on
codemode.mode controls how an already active Codemode Session presents tools; it is not an activation switch. on preserves direct declarations. only hides callable direct declarations from the request while those tools remain available through Codemode and their canonical declarations remain recorded. There is no Codemode-specific CLI flag or Role setting.
After a manual file edit, restart the Gateway or explicitly save through the Codemode settings page to publish the saved values. Provider reload does not publish tool settings. The page distinguishes saved values that are not yet applied. A shared mode change takes effect at the next preparation; a Profile activation-default change leaves existing Session selection intact. Session Apply changes only Codemode under the Session's current rules, so a restricted existing Session may still reject enablement after a Profile default was enabled.
Tool exposure and product groups are separate:
| Exposure | Session behavior |
|---|---|
direct | Callable while active; normally declared directly |
codemode, deferred | Callable from the registered inventory without requiring a direct declaration |
model-only | May be declared but cannot be called by a script |
hidden | Neither declared nor callable |
Enabled MCP servers supply their native tools with server exposure and ordered toolExposure settings. They do not require an mcp-NAME product toolset or an include-list activation gate. Applicable MCP settings may automatically activate Codemode; an explicit exclusion still takes precedence. When Codemode is disabled, an allowed active tool search can still discover indirect MCP tools. See MCP Servers.
The sandbox loads on the first execution. Its time limit includes loading and VM startup. Compiled code can be reused within the Anyy process, while each execution has its own JavaScript VM and globals. A failed load can be retried by a later call; cancelling a loading call does not cancel another call's load. No installed Node.js runtime is needed for this sandbox.
Codemode values saved by a successful script belong to the selected conversation branch and can be read after reopening its database. A timed-out script keeps its partial output and error, while its staged value changes are discarded. When output is shortened, the returned full-output path can be read later with read using offset and limit. Already completed tool effects are not rolled back by a failed script. See Codemode for APIs, limits and examples, and Tool Search for discovery inputs.
Sessions and Skills
A session may carry an explicit toolset selection. In the current implementation, an active Skill can request additional groups when the session still uses the Profile defaults. An explicit turn selection or a deliberately narrowed session selection takes precedence. A child cannot expand its parent's permitted access scope.
If a turn contains attachments, Anyy can add the artifact group for that turn so the model can access the scoped files.
Enabled tools execute directly. Credentials, operating-system permissions, backend health and session scope determine whether the requested operation is available. A toolset organizes the model catalog.
Troubleshooting
| Symptom | Check |
|---|---|
| A configured tool is not visible | Check its eligible product group, exposure and Session selection |
| MCP server is connected but tools are absent | Check server enablement/exposure and whether Codemode or tool search is active |
| A child lacks a tool | The parent catalog or child tool policy did not allow it |
| Tool invocation fails | Inspect its result, credentials, operating-system permissions and backend status |