← Back to docs

Profiles define what an agent can and cannot do. They control shell execution mode, file write permissions, database mutation access, and tool approval requirements. Every agent runs under a profile — the default is readonly.

Built-in profiles

readonly

Safe research profile for inspecting production systems. No file writes, restricted shell, read-only database access.

CapabilitySetting
ShellRestricted (allowlisted commands only)
File writeOff
DatabaseSELECT only
ApprovalDangerous tools require approval
rho-agent main --profile readonly

developer

Full development profile with file editing and unrestricted shell access. Database queries remain read-only by default.

CapabilitySetting
ShellUnrestricted
File writeFull
DatabaseSELECT only
ApprovalGranular (database tools require approval)
rho-agent main --profile developer --working-dir ~/proj/myapp

eval

Unrestricted profile for sandboxed environments. No restrictions, no approval prompts. Intended for containers running benchmarks or evaluations where the security boundary is the container itself.

CapabilitySetting
ShellUnrestricted
File writeFull
DatabaseFull (mutations allowed)
ApprovalNone
rho-agent main --profile eval

developer-bash-only

Same capabilities as developer, but only registers the bash tool. File inspection and database tools are not available — the agent must use shell commands for everything.

Custom profiles

Point --profile to a YAML file to define custom capabilities:

rho-agent main --profile path/to/my-profile.yaml

YAML schema

profile: my-custom-profile
description: "Description of this profile's purpose"

shell:
  mode: restricted | unrestricted

file_write:
  mode: off | create-only | full

database:
  mode: readonly | mutations

approval:
  mode: all | dangerous | granular | none
  required_tools:        # Used with granular mode
    - oracle
    - mysql
  dangerous_patterns:    # Patterns that trigger approval prompts
    - "rm -rf"
    - "DROP TABLE"

shell_timeout: 120       # Seconds (default: 120)
shell_working_dir: /app  # Default working directory
bash_only: false         # Only register bash tool

Capability modes

Shell modes

ModeBehavior
restrictedOnly allowlisted read-only commands. Redirects and destructive commands are blocked.
unrestrictedAny shell command is allowed.

File write modes

ModeBehavior
offNo file writing tools available.
create-onlyCan create new files but not overwrite existing ones. Blocks writes to sensitive paths.
fullUnrestricted file write and edit access.

Database modes

ModeBehavior
readonlyOnly SELECT queries. INSERT, UPDATE, DELETE, DROP, CREATE, ALTER, and TRUNCATE are blocked.
mutationsAll SQL operations allowed.

Approval modes

ModeBehavior
allEvery tool call requires user approval.
dangerousTools classified as dangerous require approval (bash, write, edit, database tools, delegate).
granularOnly tools listed in required_tools require approval.
noneNo approval prompts.

Example: read-only with database approval

profile: production-research
description: "Read-only access with explicit approval for database queries"

shell:
  mode: restricted

file_write:
  mode: off

database:
  mode: readonly

approval:
  mode: granular
  required_tools:
    - postgres
    - oracle