| name | cli-config |
| description | Guide for configuring YAACLI CLI. Use this skill when users want to configure models, tools, subagents, custom commands, or other CLI settings. Covers both global and project-level configuration. |
YAACLI CLI Configuration
Configuration is loaded from multiple locations with project-level priority (no merging between levels).
Configuration Locations
| Level | Location | Priority |
|---|
| Global | ~/.yaacli/ | Default |
| Project | .yaacli/ | Overrides global |
Configuration Files
config.toml (Global)
Main configuration file for model, display, and subagents.
[general]
model = "anthropic:claude-sonnet-4-5"
model_settings = "anthropic"
model_cfg = "claude_200k"
instructions = """
Prefer concise, evidence-based answers.
"""
max_requests = 1000
[model_profiles.fast]
label = "Fast"
model = "openai-responses:gpt-5-mini"
model_settings = "openai_responses_low"
model_cfg = "gpt5_270k"
instructions = """
Optimize for speed. Avoid broad exploration unless necessary.
"""
[env]
[media]
max_pending_attachments = 8
max_pending_attachment_bytes = 20971520
[display]
code_theme = "auto"
max_tool_result_lines = 5
max_arg_length = 100
max_output_lines = 1000
max_output_blocks = 1000
max_output_bytes = 4194304
max_stream_render_bytes = 524288
max_prompt_history = 500
show_token_usage = true
show_elapsed_time = true
[subagents]
disabled = []
tools.toml (Project)
Project-level tool permissions in .yaacli/tools.toml:
[tools]
enable_codeact = true
enable_user_input = true
user_input_timeout_seconds = 120
mcp_mode = "direct"
need_approval = ["shell_exec", "write"]
Set enable_codeact = false to remove both run_code and run_program. Shell remains a separate execution surface and is not callable from CodeAct.
Set enable_user_input = false when the project should not expose the interactive ask_user_question tool. user_input_timeout_seconds must be positive and finite; an unanswered question rejects the deferred call after this interval so the agent can continue. Headless mode never exposes it.
Use mcp_mode = "direct" to expose each MCP server's native tools as namespaced <server>_<tool> names by default. In mcp.json, set a server's prefix to a custom string to replace <server>, or set prefix to "" to expose native tool names without a prefix. Omit prefix or set it to null to preserve the server-name default. Use mcp_mode = "proxy" to expose only mcp_search_tool and mcp_call_tool, which is useful when many MCP tools would otherwise enlarge or destabilize the model-facing tool list. Servers marked "required": false remain optional in both modes.
Common patterns:
[] - No additional static approval requirement
["shell_exec"] - Approve foreground shell commands
["shell_exec", "write", "edit"] - Approve shell and code modifications
mcp.json
MCP server configurations:
{
"servers": {
"my-server": {
"transport": "stdio",
"command": "npx",
"args": ["-y", "@some/mcp-server"],
"env": {},
"prefix": "custom"
}
}
}
Custom Slash Commands
Define custom commands in config.toml:
[commands.deploy]
description = "Deploy to production"
prompt = """
Please help me deploy to production...
"""
Every custom command uses the same agent execution semantics. /init is provided by
default, while commands such as /commit and /review come from configuration.
instructions adds a static model-instruction segment only while its profile is active. It applies to every main-agent model request in TUI and headless runs, including restored and compacted histories; /model changes it for later requests in the current session.
Subagent Configuration
YAACLI accepts generic Markdown definitions and strict versioned SubagentSpec YAML or
JSON documents in ~/.yaacli/subagents/.
Use Markdown for the common concise format:
---
name: my-subagent
description: Brief description shown in the delegation roster.
instruction: Use this agent for bounded specialist work.
model: inherit
model_settings: inherit
model_cfg: inherit
tools: [glob, grep, ls, view]
optional_tools: [shell_exec]
---
You are a specialist in this domain. Return a bounded, evidence-based result.
name and description are required. instruction, tools, optional_tools,
model, model_settings, and model_cfg are optional. Tool fields accept lists or
comma-separated strings. description plus optional instruction form the
parent-facing roster entry, while the body becomes the child's instructions. Markdown
is normalized into the current capability-first SubagentSpec; it does not restore old
delegate classes or clone live parent tools. YAACLI materializes its current standard
safe child capability template for the common inherited-tool behavior. Tool names form
a visibility allowlist over that explicit plan; both fields add names to the allowlist
but do not create missing tools or gate route registration. Omitted or inherit model
fields use the active root configuration.
Use native YAML/JSON when exact capabilities or delegation policy are required:
schema_version: 1
route: my-subagent
agent:
name: my-subagent
description: Brief description shown in the delegation roster.
model: anthropic:claude-sonnet-4-5
instructions: |
You are a specialist in this domain. Return a bounded, evidence-based result.
capabilities:
- FilesystemCapability
- ShellCapability
history: isolated
history_message_limit: 100
max_depth: 1
spawn_targets: []
execution_modes: [foreground, background]
linkage: child
durability: process
YAACLI uses a process-local child driver, so native durability: restart is rejected
rather than silently weakened. An omitted native agent.model uses the runtime's
explicit default-model resolver. Native child capabilities are explicit serialization
names; YAACLI does not derive them from tool names or copy the parent's final tool
surface.
If matching name.md and name.yaml/name.yml/name.json files coexist, Markdown is
the complete authoritative definition. The native sidecar is ignored rather than
merged, which keeps stale presets copied during an earlier upgrade from overriding the
current standard child template. Use a native file by itself when exact capabilities or
delegation policy are required. Other duplicate routes are rejected. The
[subagents.overrides.<route>] table may replace model, model_settings, or
model_cfg after normalization; disabled removes routes after loading.
Builtin Presets
| Preset | Purpose |
|---|
explorer | Codebase navigation and evidence gathering |
executor | Independent bounded task execution |
code-reviewer | Architecture, correctness, security, and maintainability review |
Skills Directory
Skills are loaded from (highest priority last):
- Built-in:
yaacli/skills/ (package bundled)
- Global:
~/.yaacli/skills/
- Project:
.yaacli/skills/
Environment Variables
TUI and durable-session settings can be overridden via YAACLI_* environment variables:
YAACLI_CODE_THEME
YAACLI_SHOW_TOKEN_USAGE
YAACLI_SHOW_ELAPSED_TIME
YAACLI_SESSION_DIR
YAACLI_DATABASE_PATH
YAACLI_AUTO_RESTORE
YAACLI_OAUTH_REFRESH_ENABLED
YAACLI_OAUTH_REFRESH_INTERVAL_SECONDS
YAACLI_OAUTH_REFRESH_FAILURE_RETRY_SECONDS
YAACLI_OAUTH_REFRESH_ON_STARTUP
Quick Setup
Run yaacli. When general.model is empty, the first-run wizard initializes the
global configuration and built-in assets before starting the TUI.