fix(permissions): handle None response from ACP request_permission

This commit is contained in:
Aniruddha Adak 2026-04-21 15:22:58 +05:30 committed by Teknium
parent 027751606a
commit ea06104a3c
2 changed files with 17 additions and 0 deletions

View file

@ -63,6 +63,9 @@ def make_approval_callback(
logger.warning("Permission request timed out or failed: %s", exc) logger.warning("Permission request timed out or failed: %s", exc)
return "deny" return "deny"
if response is None:
return "deny"
outcome = response.outcome outcome = response.outcome
if isinstance(outcome, AllowedOutcome): if isinstance(outcome, AllowedOutcome):
option_id = outcome.option_id option_id = outcome.option_id

View file

@ -73,3 +73,17 @@ class TestApprovalMapping:
result = cb("rm -rf /", "dangerous") result = cb("rm -rf /", "dangerous")
assert result == "deny" assert result == "deny"
def test_approval_none_response_returns_deny(self):
"""When request_permission resolves to None, the callback should return 'deny'."""
loop = MagicMock(spec=asyncio.AbstractEventLoop)
mock_rp = MagicMock(name="request_permission")
future = MagicMock(spec=Future)
future.result.return_value = None
with patch("acp_adapter.permissions.asyncio.run_coroutine_threadsafe", return_value=future):
cb = make_approval_callback(mock_rp, loop, session_id="s1", timeout=1.0)
result = cb("echo hi", "demo")
assert result == "deny"