[loop-cycle-1] feat: tool allowlist for autonomous operation (#69) #88
Reference in New Issue
Block a user
Delete Branch "fix/tool-allowlist-autonomous"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What
Adds config/allowlist.yaml — a YAML-driven gate that auto-approves bounded tool calls when no human is at the keyboard.
Why
This is THE blocker for Timmy's sovereignty (issue #69). Without this, every shell, python, and write_file tool call requires stdin confirmation. When Timmy runs in scripts, dev loops, or the heartbeat tick, there is no human — tool calls simply abort.
How it works
config/allowlist.yaml defines what's safe:
tool_safety.py gains
is_allowlisted(tool_name, tool_args)that checks against YAMLcli.py gains:
_is_interactive(): detects if stdin is a real terminal--autonomousflag: explicit opt-in for scriptsSafety model
Tests
44 new tests for allowlist logic + 8 updated CLI tests. 1328 total pass, 75.6% coverage.
Closes #69