# Хук agent: виявлення необмежених циклів агентів

> Перевірте кодову базу на виклики агентів і LLM без обмеження кроків чи часу або оцініть окремий виклик просто з командного рядка.

Канонічна URL-адреса: https://lagune.ai/uk-UA/docs/hooks/agent
Мова: uk-UA
Оригінал: https://lagune.ai/docs/hooks/agent
Останнє оновлення: 2026-11-03

Хук `agent` позначає **середовища виконання агентів, що працюють у циклі без обмеження ходів, бюджету чи часу**, тобто діру неконтрольованої автономії, через яку підроблені вхідні дані перетворюються на необмежені витрати чи ескалацію через prompt injection. Він **враховує мову** й охоплює дві екосистеми фреймворків агентів: **JavaScript** (середовище виконання `query` з агентного SDK **Claude**) і **Python** (**LangChain**, **LangGraph**, **CrewAI**, **OpenAI Agents**). Це детермінований рушій [спеціалізації `llm`](https://lagune.ai/uk-UA/docs/catalog), який ви можете запускати самі в режимі **scan** або **check**.

## Запуск

**Перевірити кодову базу**

```bash
npx lagune read agent                # scans the whole project
npx lagune read agent --dir src/ai   # scans a directory
npx lagune read agent --file chat.ts # scans a single file
```

**Перевірити виклик**

```bash
npx lagune read agent --lang javascript --pattern 'query({ prompt })'                           # => uncapped
npx lagune read agent --lang javascript --pattern 'query({ prompt, options: { maxTurns: 5 } })' # => safe
npx lagune read agent --lang python --pattern 'AgentExecutor(agent=a, max_iterations=None)'     # => uncapped
```

Кожен рядок під **Uncapped agent loops found** у файлі, що імпортує SDK агентів, є або викликом середовища виконання `query` з агентного SDK Claude без обмеження ходів, бюджету чи часу (JavaScript, без обмежень за замовчуванням), або явним зняттям обмеження фреймворку за замовчуванням, як-от `max_iterations=None` / `max_turns=None` (Python, обмежений за замовчуванням). В обох випадках код виходу ненульовий. `generateText`/`streamText` з Vercel AI SDK за замовчуванням виконують один крок (`stopWhen: stepCountIs(1)`), тож простий виклик там не може зациклитися й не позначається, а звичайний `db.query(...)` ніколи не сприймається як виклик агента. Чистий запуск виводить `no uncapped agent loops found`.

## Як читати вердикт

| Вердикт    | Значення                                                                                                       |
| ---------- | -------------------------------------------------------------------------------------------------------------- |
| `uncapped` | Виклик середовища виконання `query` без обмеження (JS) або явне зняття обмеження (`=None`, Py).                |
| `safe`     | Виклик `query`, що задає обмеження, генерація за один крок або виклик фреймворку, обмеженого за замовчуванням. |
| `invalid`  | Фрагмент коду не містить розпізнаваного виклику агента, який можна оцінити.                                    |

### Параметри CLI

| Параметр    | Значення      | Опис                                                                            |
| ----------- | ------------- | ------------------------------------------------------------------------------- |
| `--pattern` | фрагмент коду | Перевірити один виклик. Повторіть, щоб перевірити кілька, по вердикту на рядок. |
| `--lang`    | мова          | Обов'язковий із `--pattern`: `javascript` або `python`.                         |
| `--dir`     | каталог       | Обмежити перевірку каталогом. Повторюється й поєднується з `--file`.            |
| `--file`    | файл          | Обмежити перевірку одним файлом. Повторюється й поєднується з `--dir`.          |

Без параметрів хук перевіряє весь проєкт. `--pattern` потребує `--lang` і не поєднується з `--dir` чи `--file`.

**Найкраще з можливого, але не вичерпно**

Власноруч написаний цикл агента будь-якою мовою не під силу статичній перевірці. Сприймайте це як надійний мінімум, а не як повний перелік.

**Порада**

Хук вирішує лише щодо обмеження: обмеження можливостей, змішування рівнів довіри й авторизацію і далі охоплює [спеціалізація `llm`](https://lagune.ai/uk-UA/docs/catalog), бо це питання судження.

## Часті запитання

### Навіщо обмежувати цикл агента?

Необмеженого агента можна довести до нескінченної рекурсії, витрат чи ескалації через prompt injection. Параметри maxTurns, maxBudgetUsd, stopWhen і signal обмежують його, а хук agent позначає виклик середовища виконання query, який не задає жодного з них.
