Вісім помилок з shell і git, яких припускалися наші агенти, і правило для кожної
Агенти пишуть команди shell швидко й упевнено, і частина збоїв повторюється. Ось вісім реальних помилок за жовтень 2026 року, що саме кожна зламала і правило в один рядок, яке ми записали після неї. Скопіюйте ці правила у власні інструкції для агентів.
🎯 Для Для всіх, хто дозволяє агенту виконувати команди shell, cron або git на спільній машині
- Вісім конкретних шаблонів збоїв у shell і git та правило, яке запобігає кожному з них
- Як перетворити кожен інцидент на один рядок, який можна перевірити
- Де зберігати ці правила, щоб агенти справді їх читали
📓 Навіщо вести список власних помилок
Загальні поради про безпеку в shell легко знайти й так само легко проігнорувати. Правило, у якому названо дату, команду й наслідок, читається інакше. Ми тримаємо один короткий список у файлі, який кожен агент завантажує на старті, і кожен запис у ньому — реальний збій. Коли трапляється новий, додаємо один рядок: що зламалося і яке правило.
🔟 Вісім випадків
- Замінений увесь crontab. 12 жовтня 2026 року root-овий crontab було перезаписано трьома рядками, і 59 завдань, зокрема резервні копії та дампи баз даних, зникли. Помітили це через день. Правило: ніколи не переписуйте crontab. Додавайте нове завдання окремим файлом у каталозі cron і запускайте сторож, який порівнює список завдань.
sshусередині циклу читання. Уwhile read ... < fileкомандаsshвичитує решту файлу зі стандартного вводу. Виконався лише один із п'яти записувачів. Правило: спершу прочитайте список у масив або викликайтеssh -n.- Самогубство шаблоном.
pkill -fіpgrep -fзбігаються з командним рядком вашої власної оболонки, якщо шаблон у ньому є. Один агент убив власну оболонку, а стежучий процес чекав сам на себе. Правило: убивайте за ідентифікатором процесу й перевіряйте, що шаблону немає в рядку запуску. - Порожній список означає все.
git reset HEAD --pathspec-from-file=з порожнім файлом скинув увесь спільний індекс. Правило: перед будь-якою командою, яка бере список із файлу або зxargs, перевірте, що список не порожній. - Зарезервовані імена shell. Присвоєння
GROUPS,RANDOM,SECONDS,UIDабоHOSTNAMEмовчки ігнорується. Правило: давайте власним змінним префікс. &&іset -e.cmd && echo okне зупиняє скрипт, колиcmdзавершується з помилкою заset -e, а в нашому інструменті агентаset -eвзагалі не працював, бо команду обгорнуто. Коміт пішов із десятьма червоними тестами. Правило: перевіряйте код виходу явно:if ! cmd; then exit 1; fi.- Код виходу бере конвеєр.
pytest | tail -1 && git commitкомітить на червоному, адже код виходу конвеєра належить його останній команді. Правило: запускайте тести без конвеєра або вмикайтеpipefail. - Команда, яка так і не виконалася.
chmod +xусередині заблокованої команди не виконався, і ніхто це не перевірив. Правило: перевіряйте режим файлу перед комітом.
🛠️ Практика: складіть власний список
- Відкрийте останні п'ять інцидентів, спричинених агентом або скриптом. Запишіть по одному рядку на кожен: дата, команда, наслідок.
- Для кожного напишіть одне правило, яке міг би перевірити скрипт. Якщо перевірити неможливо, переписуйте, доки не стане можливо.
- Покладіть список у файл, який ваші агенти читають першим, і тримайте його коротшим за тридцять рядків.
- Додайте перевірку для правил, які можна протестувати: наприклад скрипт, що відмовляє в коміті, коли підготовлений список порожній або режим файлу неправильний.
- Після кожного нового інциденту додавайте один рядок того ж дня.
- Раз на квартал видаляйте правила, які тепер забезпечує інструмент.
✅ Перевірте себе
- Виберіть будь-яке правило навмання. Ви можете назвати інцидент, що стоїть за ним.
- Запустіть цикл із
sshусередині на двох хостах. Обидва хости доступні. - Зробіть так, щоб тест падав у конвеєрі, і переконайтеся, що коміт відхилено.
- Агент, який ніколи не бачив вашої системи, читає список і в першому завданні уникає щонайменше трьох із восьми помилок.
🚧 Коли це не працює
- Список, який ніхто не завантажує. Якщо файлу немає в стартовому контексті агента, правил не існує.
- Правила без тригера. «Будьте обережні з cron» — не правило. «Додавайте завдання файлами, ніколи не редагуйте crontab» — правило.
- Забагато правил. Після тридцяти рядків важливі зникають. Прибирайте те, що вже забезпечує інструмент.
- Різні оболонки. Деякі з цих правил поводяться інакше в інших оболонках. Вказуйте, про яку оболонку йдеться в правилі.
- Правила замість дозволів. Агент, якому не можна торкатися продакшену, не повинен мати продакшен-облікових даних, що б не казав список.
📊 Докази
| Що ми вимірювали | Інциденти, записані у файлі наших правил для агентів між 12 і 14 жовтня 2026 року |
| Коли | Записи прочитано 3 листопада 2026, 22:06 UTC |
| Артефакт | Розділ «помилки з нашої власної роботи» у файлі наших правил для агентів, у приватному репозиторії |
| Обмеження | Вісім випадків, одна команда. Це показує форму збоїв, а не їхню частоту |
➡️ Далі
Налаштуйте кроки відновлення за допомогою Відновлення після невдалого, завислого або невизначеного запуску і прочитайте, як писати інструкції, які завантажують агенти, у AGENTS.md і файли правил.
Джерела
- AGENTS.md і файли правил: задайте межі для агента-програміста: де живе список.
- Відновлення після невдалого, завислого або невизначеного запуску: кроки відновлення.
- Плейбук для ІІ-інцидентів у малій команді: що робити, коли агент помиляється.
- Дозволи й потоки даних: до чого агент може мати доступ.
🔗 Зв'язки статті
Відкрити повний граф знань ↗Зв’язки опублікованих статей. Виберіть вузол, щоб відкрити статтю біля заголовка.
Зв’язки статей · клавіатура / текст
Та сама тема
- Векторна база — це мапа, а не джерело: що ми з'ясували про пошук
- Коли невідомо, скільки коштував виклик моделі: заморожування, потім звіряння
- Розбиття великого завдання для дешевої моделі: урок про 24 000 байтів
- Навички, інструменти MCP і правила: три способи дати агенту можливості
- Кілька агентів, один репозиторій: правила володіння з реальних інцидентів
- Не тримайте ключі провайдера в агенті: один шлюз, один токен на завдання
Наступні кроки
Пов'язані матеріали
Векторна база — це мапа, а не джерело: що ми з'ясували про пошук
Векторна база знаходить уривки, близькі за змістом до вашого запиту. Вона не знає, які з них правдиві чи актуальні. Сприймайте кожен результат як вказівник: відкрийте названий файл, перевірте хеш і беріть числа з артефакту, а не зі знайденого абзацу.
AI agents and MCP explainedКоли невідомо, скільки коштував виклик моделі: заморожування, потім звіряння
Іноді виклик моделі перевищує час очікування, і ви не знаєте, чи провайдер списав кошти. Ніколи не записуйте це як нуль. Позначте витрату як непевну, зупиніть нові платні виклики й доручте названій людині звірити її з випискою провайдера. Виняток — відмови, що сталися до генерації.
AI agents and MCP explainedРозбиття великого завдання для дешевої моделі: урок про 24 000 байтів
Дешева модель добре дає раду з однією невеликою чітко окресленою роботою, але погано з великим нагромадженням. Ми обмежуємо завдання 24 000 байтами і відмовляємо більшим ще до виклику моделі. Діліть на одиниці — один файл або одна країна на завдання — і перевіряйте розмір до початку.
AI agents and MCP explainedНавички, інструменти MCP і правила: три способи дати агенту можливості
Агенти отримують можливості по-різному. Правило обмежує те, що вони роблять, навичка підказує, як виконати роботу, а інструмент MCP дозволяє викликати функцію. Кожен із трьох має власний ризик, тож фіксуйте всі три в реєстрі й перевіряйте тестом, що нічого не існує поза ним.
💬 Коментарі