Subagent timeout config
Skill Songhonglei/better-agent-skills/skills/subagent-timeout-config
One-click subagent timeout configurator for OpenClaw. Configures the three related fields (agents.defaults.timeoutSeconds + subagents.runTimeoutSeconds + acp.runtime.ttlMinutes) atomically with built-in TTL constraint validation (ttlMinutes * 60 ≥ runTimeoutSeconds). Three preset profiles — quick (60s/1h/1h, fast feedback), normal (3min/2h/2h, everyday dev), patient (5min/3h/3h, long-running tasks) — plus --custom for arbitrary values. Auto-backup before write, optional gateway auto-restart, --dry-run preview. Triggers: "set subagent timeout", "subagent 超时", "配置 timeout", "调整超时", "subagent timeout config", "openclaw timeout", "tool call timeout".From its SKILL.md
npx -y skills add Songhonglei/better-agent-skills --skill subagent-timeout-configAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
- runs commandsInstructs the agent to run 8 commands, including `python3 <skill-install-path>/scripts/set_timeout.py --profile normal --dry-run` and 7 more.
SKILL.md
5.9 KB, ~1.4k tokens by cl100k_base, as published. Nobody here has run it
subagent-timeout-config
- Author: Evan Song · github.com/Songhonglei
- Repository: https://github.com/Songhonglei/better-agent-skills
- License: MIT
One-click timeout configurator for OpenClaw subagents. Set the three related timeout fields atomically with built-in constraint validation, automatic backup, and optional gateway restart.
⚠️ OpenClaw-only by default — reads/writes
~/.openclaw/openclaw.json. Use--config <path>to target a different runtime's JSON config file.
Why this skill exists
OpenClaw timeouts are split across three nested fields that must be tuned together:
| Field | Path | What it controls |
|---|---|---|
timeoutSeconds | agents.defaults.timeoutSeconds | Per-tool-call wait |
runTimeoutSeconds | agents.defaults.subagents.runTimeoutSeconds | Per-subagent task budget |
ttlMinutes | acp.runtime.ttlMinutes | ACP session lifetime |
Hidden trap: ttlMinutes * 60 must be ≥ runTimeoutSeconds, otherwise
sessions die before subagents finish. Default OpenClaw values (30s / 30min /
30min) are too tight for many real-world tasks (codex/claude-code planning,
large refactors, complex analysis).
This skill picks the right combination in one command, validates the constraint, backs up the original config, and restarts the gateway.
Preset Profiles
| Profile | timeoutSeconds | runTimeoutSeconds | ttlMinutes | Use case |
|---|---|---|---|---|
quick | 60s (1min) | 3600s (1h) | 60min (1h) | Fast feedback, interactive debugging |
normal | 180s (3min) | 7200s (2h) | 120min (2h) | Everyday development |
patient | 300s (5min) | 10800s (3h) | 180min (3h) | Long-running tasks, big codebases |
Aliases: impatient / fast → quick, slow → patient.
Usage
Preview before applying (recommended first time)
python3 <skill-install-path>/scripts/set_timeout.py --profile normal --dry-run
Apply a profile (with auto-restart)
python3 <skill-install-path>/scripts/set_timeout.py --profile patient
Apply without restarting Gateway
python3 <skill-install-path>/scripts/set_timeout.py --profile normal --no-restart
# Then later, when you're ready:
openclaw gateway restart
Custom values
# Format: timeoutSeconds,runTimeoutSeconds,ttlMinutes
python3 <skill-install-path>/scripts/set_timeout.py --custom 240,9000,150
Check current configuration
python3 <skill-install-path>/scripts/set_timeout.py --status
List all profiles
python3 <skill-install-path>/scripts/set_timeout.py --list
Target a non-default config path
python3 <skill-install-path>/scripts/set_timeout.py \
--profile normal --config /path/to/your/openclaw.json
# Or via env:
OPENCLAW_CONFIG=/path/to/openclaw.json python3 <...>/set_timeout.py --profile normal
Workflow (when the agent invokes this skill)
- Ask the user which profile suits their task (or accept
--custom). - Show
--dry-rundiff first when the user is unsure. - Apply with default settings (auto-backup + auto-restart).
- Confirm new settings via
--status. - If validation fails (e.g. TTL too small), explain the constraint and offer a corrected value.
Safety Features
- Auto-backup: Before every write, the original config is copied to
<config>.bak.<YYYYMMDD-HHMMSS>. Restore bycpif needed. - Atomic write: New config is written to a
.tmpfile then renamed, so a crash mid-write never leaves a corrupt JSON. - Constraint validation: Refuses to apply invalid combos (e.g. ttlMinutes
too small for runTimeoutSeconds). Validation runs before any file
modification —
--dry-runand real applies both validate. - Restart opt-out:
--no-restartlets you defer the Gateway restart (useful when you have a long-running task you don't want to interrupt).
CLI Reference
| Flag | Description |
|---|---|
--profile <name> | Apply preset: quick / normal / patient (+ aliases) |
--custom T,R,TTL | Apply custom values (3 comma-separated integers) |
--status | Print current configuration |
--list | List all available profiles |
--config <path> | Override config file path (default ~/.openclaw/openclaw.json) |
--dry-run | Preview diff; do not write file or restart Gateway |
--no-restart | Skip openclaw gateway restart after writing |
Exit codes: 0 = success, 1 = error (bad args, IO, validation failure).
Dependencies
- Python 3.8+ (standard library only — no pip dependencies)
openclawCLI on PATH (only needed for the auto-restart step; use--no-restartif you don't have it)
What This Skill Is NOT
- Not a generic timeout tool — it only knows about OpenClaw's three
specific fields. For other agent runtimes' config formats, use
--configto point at a custom JSON path but be aware the schema is OpenClaw-specific. - Not a persistent daemon — it's a one-shot CLI invocation.
- Not a profile editor — to add a new preset, edit
PROFILESinscripts/set_timeout.py.
Key Files
| File | Purpose |
|---|---|
scripts/set_timeout.py | Configurator: profiles, validation, backup, restart |
What ships with it: 4 files
20.6 KB alongside SKILL.md, 1 of them executable
scripts/
- set_timeout.pyruns15.3 KB
- .gitignore268 B
- LICENSE1.0 KB
- README.md4.0 KB