Skip to content

Harness tools

Harness tools let agents act on their environment. The workflow selects which tools the model can call; agent configuration defines their permissions.

Declare tools on the agent step, alongside its task and system instructions:

- agent: reviewer
config:
file: "~/.skiller/profiles/agent.reviewer.json"
tools:
- shell
- files

Configuring permissions does not expose a tool by itself. The workflow must also enable it.

Add the tools section to the agent profile or to ~/.skiller/settings/agent.json, the global agent configuration.

If the profile defines tools, it replaces the entire global tools section, not individual tool fields. Otherwise, the global section applies. Missing settings use each tool’s defaults; they do not grant unrestricted access.

{
"tools": {
"shell": {
"allowed_paths": ["{{runtime.cwd}}"],
"allowlist_enabled": true,
"allowed_commands": ["pwd", "ls", "cat"]
},
"files": {
"read": ["{{runtime.cwd}}"],
"write": [],
"all": []
}
}
}
Tool Purpose Permissions
Shell Execute shell commands. Command allowlist and checks on working directory and detected paths.
Files Read, write, and edit files. Separate read and write roots.

Permissions belong to each tool. Files restrictions do not prevent an enabled shell command from reading or modifying files.

For Shell and Files, unknown configuration fields are rejected. Boolean fields require booleans; path and command lists require non-empty strings. Omitted or null fields inside a tool configuration use that field’s defaults. This does not make the entire tools section nullable.

Tool configuration fields have no environment-variable overrides. Shell expansion inside a command is a separate mechanism.