AI пишет код.
RedTeam проверяет его.
Не «ещё один сканер». Автономный цикл безопасности для AI-кода: агент генерирует — мы находим уязвимость, доказываем её эксплойтом и возвращаем агенту, чтобы он починил. Встраивается туда, где вы уже пишете код.
Этот цикл уже работает в наших интеграциях (hook, MCP, CI) — ниже. Разница с обычным SAST: мы не флагаем паттерн, а доказываем эксплуатируемость и отдаём фикс.
🔌 Куда встраивается
Интеграции — это способ доставки цикла в ваш поток, а не сам продукт. Выберите канал:
🔒 SaaS или on-prem — вы решаете, куда идёт код
Главный вопрос security-команды — «куда вы отправляете наш исходный код?». Два контура:
SaaS быстрый старт
Ноль инфраструктуры. GPU не нужен. Код уходит на наш воркер для скана; на публичном контуре мы не обучаемся на клиентском коде.
Private / on-prem enterprise
Код не покидает периметр. Тот же CLI/CI/MCP, только RT_API указывает на ваш воркер. Для КИИ / 152-ФЗ / коммерческой тайны. Запросить on-prem →
🚀 Быстрый старт
Пошагово по каждому каналу. Без ключа — бесплатный триал (файл до 400 строк). С API-ключом (Профиль → API-ключи) — списание с баланса: 1₽ за 500 строк (fast), 3₽ (deep-судья).
🤖 Claude Code — hook agent loop
Шаг 1 — скачать хук:
curl -fsSL https://red-team.tech/cli/rt-scan-hook.py -o ~/.claude/rt-scan-hook.py
Шаг 2 — добавить в ~/.claude/settings.json:
{
"hooks": {
"PostToolUse": [{
"matcher": "Edit|Write|MultiEdit",
"hooks": [{ "type": "command", "command": "python3 ~/.claude/rt-scan-hook.py" }]
}]
}
}Шаг 3 — (опц.) ключ для приватного/платного контура:
export RT_KEY=rt_ваш_ключ # Профиль → API-ключи # on-prem: export RT_API=https://ваш-хост/scans/file
Готово. Агент правит файл → хук сканирует → находки возвращаются в сессию → агент чинит. Чисто/недоступно → хук молчит, поток не ломается.
🧩 MCP — Cursor · Codex · Claude Desktop
Шаг 1 — скачать сервер:
curl -fsSL https://red-team.tech/cli/rt-mcp-server.py -o rt-mcp-server.py
Шаг 2 — добавить в конфиг агента (Cursor ~/.cursor/mcp.json / Claude Desktop):
{
"mcpServers": {
"red-team-tech": {
"command": "python3",
"args": ["/ABS/PATH/rt-mcp-server.py"],
"env": { "RT_KEY": "rt_ваш_ключ" }
}
}
}Появится инструмент scan_code — агент вызовет сам, или попроси «проверь код через red-team.tech». Claude Code: claude mcp add red-team-tech -- python3 /ABS/PATH/rt-mcp-server.py.
⚙ CI/CD — GitHub Actions / GitLab
GitHub — .github/workflows/redteam.yml:
name: red-team.tech AppSec
on: [pull_request]
permissions: { contents: read, security-events: write }
jobs:
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with: { fetch-depth: 0 }
- run: curl -fsSL https://red-team.tech/cli/rt-scan -o rt-scan
- run: python3 rt-scan . --diff --sarif > rt.sarif
env: { RT_KEY: "${{ secrets.RT_KEY }}" }
- uses: github/codeql-action/upload-sarif@v3
with: { sarif_file: rt.sarif }
- run: RT_KEY=${{ secrets.RT_KEY }} python3 rt-scan . --diff --fail-on highGitLab — .gitlab-ci.yml (тот же CLI):
redteam:
image: python:3.12-slim
script:
- curl -fsSL https://red-team.tech/cli/rt-scan -o rt-scan
- RT_KEY=$RT_KEY python3 rt-scan . --diff --fail-on high
rules: [{ if: '$CI_PIPELINE_SOURCE == "merge_request_event"' }]On-prem: задай RT_API/RT_KEY в секретах — код уйдёт только на твой воркер.
⌨ CLI и pre-commit
curl -fsSL https://red-team.tech/cli/rt-scan -o rt-scan && chmod +x rt-scan export RT_KEY=rt_ваш_ключ # опц.: платный/приватный контур ./rt-scan app.py # скан файла (fast) ./rt-scan src/ --diff # только изменённые (git diff) ./rt-scan app.py --deep # + судья: подтверждение эксплойтом ./rt-scan app.py --fail-on high # exit≠0 при high (гейт)
pre-commit — .git/hooks/pre-commit (chmod +x):
#!/usr/bin/env bash
curl -fsSL https://red-team.tech/cli/rt-scan -o /tmp/rt-scan 2>/dev/null
RT_KEY=$RT_KEY python3 /tmp/rt-scan --diff --fail-on high || {
echo "red-team.tech: найдены уязвимости high — коммит остановлен"; exit 1; }📋 SARIF → GitHub Security
./rt-scan src/ --sarif > rt.sarif # → вкладка Security (см. CI выше)
GitHub App (install → select repos → done), GitLab first-class, VS Code / JetBrains — в работе. Нужно под ваш стек раньше? Напишите — приоритезируем.