Teknium
79799c80f5
test(approval): patch _YOLO_MODE_FROZEN directly in test_yolo_overrides_cron_deny
...
The test set HERMES_YOLO_MODE=1 via monkeypatch.setenv, expecting
check_dangerous_command() to honor yolo and bypass cron_mode=deny. But
tools.approval._YOLO_MODE_FROZEN is intentionally frozen at module
import time (security: prevents prompt-injection runtime escalation).
When CI imports the module BEFORE the test sets the env, the frozen
value stays False and the yolo bypass never activates.
Local runs missed this because the conftest leaked a non-empty
HERMES_YOLO_MODE into the import-time env. CI's clean-env path exposed
the bug deterministically on test (3) / test (4) shards.
Fix: patch the module attribute directly via mock.patch.object so the
test simulates process-startup-with-yolo regardless of import order.
The behavior under test (yolo bypasses cron_mode=deny for non-hardline
commands) is unchanged; the security invariant (_YOLO_MODE_FROZEN can't
be set at runtime by skills) is preserved.
Reproduced locally with: env -i HOME=$HOME PATH=$PATH python3 -m pytest
tests/tools/test_cron_approval_mode.py -o 'addopts=' -v
Without the fix: 1 failed, 23 passed. With the fix: 24 passed.
2026-05-25 05:07:49 -07:00
..
2026-02-26 03:20:08 +03:00
2026-05-22 03:33:01 -07:00
2026-04-29 20:05:32 -07:00
2026-03-23 07:43:12 -07:00
2026-05-08 14:55:40 -07:00
2026-05-21 16:40:04 +05:30
2026-05-23 02:59:13 -07:00
2026-05-04 04:45:03 -07:00
2026-05-12 15:14:49 -07:00
2026-05-12 15:14:49 -07:00
2026-04-24 03:46:46 -07:00
2026-04-17 16:05:04 -07:00
2026-04-24 03:46:46 -07:00
2026-05-13 22:07:02 -07:00
2026-04-08 13:44:58 -07:00
2026-04-16 04:19:34 -07:00
2026-05-09 13:35:39 -07:00
2026-04-20 00:32:09 -07:00
2026-03-28 17:25:04 -07:00
2026-05-10 07:37:55 -07:00
2026-04-10 13:05:44 -07:00
2026-05-17 02:29:41 -07:00
2026-04-26 09:57:58 -07:00
2026-05-06 03:41:21 -07:00
2026-05-23 20:30:29 -07:00
2026-05-22 19:46:18 -07:00
2026-05-07 05:38:05 -07:00
2026-04-30 20:33:33 -07:00
2026-05-21 16:40:04 +05:30
2026-04-11 02:58:48 -07:00
2026-05-09 17:53:13 -07:00
2026-05-14 07:59:12 -07:00
2026-02-27 03:29:26 -05:00
2026-05-13 22:54:21 -07:00
2026-05-17 02:29:41 -07:00
2026-05-08 14:27:40 -07:00
2026-05-08 14:27:40 -07:00
2026-05-08 14:55:40 -07:00
2026-05-21 17:38:19 -07:00
2026-05-21 17:38:19 -07:00
2026-05-22 01:19:01 -07:00
2026-03-27 04:03:00 -07:00
2026-04-10 03:44:43 -07:00
2026-05-08 14:55:40 -07:00
2026-05-25 05:07:49 -07:00
2026-02-26 13:55:54 +03:00
2026-05-19 00:10:43 -07:00
2026-05-24 00:38:17 -07:00
2026-05-12 16:31:46 -07:00
2026-03-02 04:34:21 -08:00
2026-05-07 06:41:42 -07:00
2026-04-24 04:58:32 -07:00
2026-03-26 14:50:26 -07:00
2026-05-17 11:40:05 -07:00
2026-05-21 16:40:04 +05:30
2026-05-24 18:05:33 -07:00
2026-04-14 21:20:37 -07:00
2026-05-07 06:17:49 -07:00
2026-05-25 12:24:58 +10:00
2026-04-21 06:14:25 -07:00
2026-04-17 19:04:11 -07:00
2026-05-05 04:54:17 -07:00
2026-05-24 17:47:24 -07:00
2026-04-17 19:26:40 -07:00
2026-05-25 05:07:38 -07:00
2026-04-23 15:11:52 -07:00
2026-04-21 16:41:26 -07:00
2026-05-09 11:12:03 -07:00
2026-04-10 03:01:46 -07:00
2026-04-10 21:14:32 -07:00
2026-04-20 00:58:16 -07:00
2026-04-08 17:23:15 -07:00
2026-05-25 01:55:59 -07:00
2026-04-13 05:15:05 -07:00
2026-03-14 11:27:02 -07:00
2026-04-21 02:03:46 -07:00
2026-05-11 06:56:30 -07:00
2026-05-04 05:08:51 -07:00
2026-05-17 02:29:41 -07:00
2026-05-21 16:40:04 +05:30
2026-05-15 01:33:13 -07:00
2026-04-23 03:01:18 -07:00
2026-04-21 13:35:31 -07:00
2026-04-28 22:16:08 -07:00
2026-04-14 02:18:38 -07:00
2026-05-18 21:01:14 -07:00
2026-05-21 16:40:04 +05:30
2026-05-14 08:03:40 -07:00
2026-05-17 23:28:45 -07:00
2026-04-19 11:27:50 -07:00
2026-04-29 07:22:33 -07:00
2026-05-04 15:31:47 -07:00
2026-05-15 16:25:31 -07:00
2026-05-24 06:54:16 -07:00
2026-04-23 05:15:37 -07:00
2026-04-09 16:24:53 -07:00
2026-05-17 04:04:15 -07:00
2026-04-16 12:36:49 -07:00
2026-05-17 02:29:41 -07:00
2026-04-16 12:36:49 -07:00
2026-05-17 02:29:41 -07:00
2026-04-21 05:19:03 -07:00
2026-04-29 20:05:32 -07:00
2026-05-07 06:33:57 -07:00
2026-05-07 07:14:16 -07:00
2026-05-16 13:06:56 -07:00
2026-04-19 16:31:07 -07:00
2026-04-19 16:31:07 -07:00
2026-04-16 21:57:10 -07:00
2026-04-16 21:57:10 -07:00
2026-05-07 05:35:33 -07:00
2026-05-17 02:29:37 -07:00
2026-05-15 14:00:01 -07:00
2026-04-16 21:57:10 -07:00
2026-05-07 07:08:04 -07:00
2026-05-17 13:33:26 -07:00
2026-05-15 14:00:01 -07:00
2026-04-16 21:57:10 -07:00
2026-04-04 10:18:57 -07:00
2026-05-07 06:32:45 -07:00
2026-05-24 04:44:59 -07:00
2026-05-07 07:39:50 -07:00
2026-04-14 10:18:05 -07:00
2026-05-07 07:03:21 -07:00
2026-05-25 01:51:53 -07:00
2026-05-08 09:27:26 -07:00
2026-05-08 09:27:26 -07:00
2026-04-23 15:14:11 -07:00
2026-04-12 06:18:05 +05:30
2026-04-29 07:22:33 -07:00
2026-04-10 03:01:46 -07:00
2026-05-23 21:02:14 -07:00
2026-04-05 12:46:07 -07:00
2026-04-22 14:45:50 -07:00
2026-05-20 01:46:40 -05:00
2026-05-22 19:59:24 -07:00
2026-05-23 20:30:29 -07:00
2026-04-13 16:32:04 -07:00
2026-05-13 17:32:22 -07:00
2026-04-23 15:11:52 -07:00
2026-05-18 10:37:35 -07:00
2026-03-17 02:02:57 -07:00
2026-05-24 18:05:33 -07:00
2026-05-18 22:19:50 -07:00
2026-05-23 01:40:35 -07:00
2026-05-17 23:28:45 -07:00
2026-04-26 11:55:02 -07:00
2026-04-20 13:24:15 -07:00
2026-05-17 02:29:41 -07:00
2026-04-10 03:44:43 -07:00
2026-04-01 04:19:19 -07:00
2026-05-17 02:29:41 -07:00
2026-05-08 14:55:40 -07:00
2026-04-01 04:19:19 -07:00
2026-05-07 06:13:37 -07:00
2026-03-04 05:30:43 -08:00
2026-03-02 02:00:09 -08:00
2026-05-23 17:47:26 -07:00
2026-05-25 01:51:27 -07:00
2026-05-19 14:17:38 -07:00
2026-05-09 17:52:12 -07:00
2026-05-20 15:04:01 -07:00
2026-04-23 05:09:08 -07:00
2026-05-21 14:18:02 -07:00
2026-04-29 21:56:47 -07:00
2026-04-24 07:06:11 -07:00
2026-05-21 19:17:51 -07:00
2026-04-20 03:07:32 -07:00
2026-03-04 17:23:23 +03:00
2026-04-16 19:39:21 -07:00
2026-04-19 16:53:11 -07:00
2026-05-09 17:53:35 -07:00
2026-04-04 16:57:24 -07:00
2026-04-19 16:47:20 -07:00
2026-04-08 21:37:51 -07:00
2026-04-20 23:20:33 -07:00
2026-04-29 07:22:33 -07:00
2026-05-09 14:46:34 -07:00
2026-03-29 21:51:44 -07:00
2026-04-09 16:24:53 -07:00
2026-05-21 16:40:04 +05:30
2026-04-30 20:38:09 -07:00
2026-04-08 17:23:15 -07:00
2026-05-23 02:20:14 -07:00
2026-04-11 16:22:50 -07:00
2026-04-26 19:02:55 -07:00
2026-04-23 21:51:19 -07:00
2026-05-09 18:44:58 -07:00
2026-05-25 01:41:19 -07:00
2026-05-22 03:33:01 -07:00
2026-05-25 01:41:19 -07:00
2026-05-25 05:07:45 -07:00
2026-05-22 03:33:01 -07:00
2026-04-30 02:53:20 -07:00
2026-05-15 12:11:32 -07:00
2026-04-16 14:23:16 -07:00
2026-05-13 17:32:22 -07:00
2026-04-21 17:49:39 -07:00
2026-05-11 23:02:15 -07:00
2026-05-18 22:29:45 -07:00
2026-04-30 02:53:20 -07:00
2026-05-24 18:04:54 -07:00
2026-05-13 22:04:28 -07:00
2026-05-20 09:22:28 -07:00
2026-05-18 10:51:15 -07:00
2026-05-08 14:55:40 -07:00
2026-05-04 00:04:36 +05:30
2026-05-13 16:39:41 -07:00
2026-05-13 16:39:41 -07:00
2026-05-21 16:40:04 +05:30
2026-05-12 13:59:22 -04:00
2026-04-20 00:32:09 -07:00
2026-05-21 14:17:39 -07:00
2026-05-23 02:20:14 -07:00
2026-04-25 06:41:58 -07:00
2026-05-21 16:40:04 +05:30
2026-05-21 16:40:04 +05:30
2026-05-21 16:40:04 +05:30
2026-05-19 19:27:34 -07:00
2026-05-21 16:40:04 +05:30
2026-05-13 22:31:28 -07:00
2026-05-21 16:40:04 +05:30
2026-05-21 16:40:04 +05:30
2026-03-01 01:54:27 +03:00
2026-05-12 01:02:25 -07:00
2026-05-21 16:40:04 +05:30
2026-05-21 02:38:45 +05:30
2026-05-25 03:35:33 -07:00
2026-05-19 17:27:24 -07:00