diff --git a/agents/runner.py b/agents/runner.py index d8c4abe..9aaa7da 100644 --- a/agents/runner.py +++ b/agents/runner.py @@ -260,7 +260,7 @@ def _run_claude( "--model", model, ] is_noninteractive = noninteractive or os.environ.get("KIN_NONINTERACTIVE") == "1" - if allow_write or is_noninteractive: + if allow_write or noninteractive: cmd.append("--dangerously-skip-permissions") if timeout is None: env_timeout = os.environ.get("KIN_AGENT_TIMEOUT") diff --git a/tests/conftest.py b/tests/conftest.py index fa2e5d5..b4a1af6 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -11,18 +11,6 @@ def _set_kin_secret_key(monkeypatch): monkeypatch.setenv("KIN_SECRET_KEY", Fernet.generate_key().decode()) -@pytest.fixture(autouse=True) -def _clear_kin_noninteractive(monkeypatch): - """Ensure KIN_NONINTERACTIVE is not inherited from parent process. - - Tests that need it explicitly set it via @patch.dict("os.environ", {"KIN_NONINTERACTIVE": "1"}). - Without this fixture, KIN_NONINTERACTIVE=1 (set by web API when launching agent subprocesses) - leaks into the test environment and causes _run_claude to add --dangerously-skip-permissions - even when noninteractive=False. - """ - monkeypatch.delenv("KIN_NONINTERACTIVE", raising=False) - - @pytest.fixture(autouse=True) def _mock_check_claude_auth(): """Авто-мок agents.runner.check_claude_auth для всех тестов. diff --git a/tests/test_runner.py b/tests/test_runner.py index fc127cb..64d8d7f 100644 --- a/tests/test_runner.py +++ b/tests/test_runner.py @@ -839,33 +839,6 @@ class TestNonInteractive: cmd = mock_run.call_args[0][0] assert "--dangerously-skip-permissions" not in cmd - # --- KIN-FIX-023: guard использует is_noninteractive, а не raw noninteractive --- - - @patch("agents.runner.subprocess.run") - def test_noninteractive_param_adds_dangerously_skip_permissions(self, mock_run, conn): - """noninteractive=True → --dangerously-skip-permissions добавляется в команду.""" - mock_run.return_value = _mock_claude_success({"result": "ok"}) - run_agent(conn, "debugger", "VDOL-001", "vdol", noninteractive=True) - cmd = mock_run.call_args[0][0] - assert "--dangerously-skip-permissions" in cmd - - @patch.dict("os.environ", {"KIN_NONINTERACTIVE": "1"}) - @patch("agents.runner.subprocess.run") - def test_kin_noninteractive_env_adds_dangerously_skip_permissions(self, mock_run, conn): - """KIN_NONINTERACTIVE=1 → --dangerously-skip-permissions добавляется в команду.""" - mock_run.return_value = _mock_claude_success({"result": "ok"}) - run_agent(conn, "debugger", "VDOL-001", "vdol", noninteractive=False) - cmd = mock_run.call_args[0][0] - assert "--dangerously-skip-permissions" in cmd - - @patch("agents.runner.subprocess.run") - def test_noninteractive_false_no_env_no_skip_permissions(self, mock_run, conn): - """noninteractive=False и нет KIN_NONINTERACTIVE → без --dangerously-skip-permissions.""" - mock_run.return_value = _mock_claude_success({"result": "ok"}) - run_agent(conn, "debugger", "VDOL-001", "vdol", noninteractive=False, allow_write=False) - cmd = mock_run.call_args[0][0] - assert "--dangerously-skip-permissions" not in cmd - # --------------------------------------------------------------------------- # run_audit