2.2 KiB
2.2 KiB
name, description
| name | description |
|---|---|
| cfg-approval-timeout-recovery | Use when a cfg://.../save write fails with "user did not answer the approval prompt": the settings-approval dialog has a hardcoded 10 s timeout and no config key; recover via direct config.yml edit once the user has approved the change. |
Recovering from cfg:// approval-prompt timeouts
Facts (verified in bundle 2026-10-18)
- Settings-write approval dialog timeout is hardcoded 10 000 ms (
timeout: JKl,JKl=1e4, countdown class treats arg as ms) in the ompdist/cli.jsbundle. No config key exists for it (checked fullcfg://registry). ask.timeoutis a DIFFERENT gate (ask-tool auto-select; 0 = wait forever). It does not govern cfg approvals.- A timed-out approval silently auto-denies: session-only value stays applied,
config.ymlunchanged. Error says "nothing changed; it stays . NEVER retry unless the user asks." - Related:
features.unexpectedStopDetection: smartinjects forced-continue<system-injection>s on text-only turns ending in a promise to act ("Task incomplete: MUST call the next concrete tool now"). Setmechanical(upstream default) ornone;smartdrives agents into junk subagent spawns to satisfy the nudge.
Recovery procedure (only when the user has already explicitly approved the change)
- Do NOT re-issue
cfg://<key>/saveafter a timeout unless the user explicitly asks again — the harness forbids it. - Edit
~/.omp/agent/config.ymldirectly:grepthe setting key to locate it; read surrounding lines.- surgical
editof the single line. - validate:
python3 -c "import yaml; yaml.safe_load(open('/home/blank/.omp/agent/config.yml'))"
- State that the file was edited directly because the invisible 10 s dialog ate the user's approval, and offer the
omp config set <key> <value>one-liner as the user-run alternative for future.
Prevention
- Before any
cfg://.../save, warn the user a ~10 s dialog is about to appear and to answer immediately. - Bundle-fact lookups:
PKGDIR=$(dirname $(readlink -f $(command -v omp)))/.., then grepdist/cli.jsfor the message string, walk to the call site, resolve minified constants withgrep -oE '[,;]CONST=[^,;)]+'(1e4= 10000).