papayu/docs/SECURITY_AND_PERSONAL_AUTOMATION.md
Yuriy 65e95a458d feat: мульти-провайдер LLM, тренды дизайна, Snyk/Documatic sync, личная автоматизация
- Мульти-провайдер: PAPAYU_LLM_PROVIDERS — сбор планов от нескольких ИИ (Claude, OpenAI), агрегация
- Тренды дизайна и иконок: вкладка в модалке, поиск по безопасным доменам (Tavily include_domains)
- Snyk Code: PAPAYU_SNYK_SYNC, REST API issues → snyk_findings в agent-sync
- Documatic: architecture_summary из .papa-yu/architecture.md в agent-sync
- Личная автоматизация: capability personal-automation (терминал git/npm/cargo, открытие URL)
- agent_sync расширен: snyk_findings, architecture_summary; analyze_project_cmd и run_batch пишут sync
- Документация: SNYK_AND_DOCUMATIC_SYNC.md, SECURITY_AND_PERSONAL_AUTOMATION.md, обновлён CLAUDE_AND_AGENT_SYNC

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-10 15:05:39 +03:00

5.9 KiB
Raw Blame History

Безопасность и личная автоматизация (терминал + интернет)

PAPA YU рассчитан на личное использование. Ниже — как настроена защита и как приложение может работать с терминалом и интернетом (Chrome, GitHub и т.д.) оставаясь надёжно защищённым.


1. Что разрешено по умолчанию

  • Файлы: чтение/запись только в выбранных пользователем путях; защита служебных каталогов (.git, node_modules, target, dist и т.д.).
  • Сеть: только исходящие HTTPS-запросы к настроенным API (LLM, OpenRouter и т.д.) из кода приложения; никакого произвольного доступа с фронтенда.
  • Браузер: через встроенный механизм Tauri (shell:allow-open) можно открывать только ссылки http(s)://, mailto:, tel: в стандартном браузере системы (Chrome, Safari и т.д.). Произвольные команды в shell для этого не нужны.

2. Личная автоматизация: терминал и интернет

Чтобы приложение могло самостоятельно выполнять ограниченный набор действий в терминале и открывать ссылки (GitHub, документация и т.д.), используется отдельная capability personal-automation.

Что даёт personal-automation

  • Открытие URL в браузере (если по какой-то причине нужен явный вызов):

    • macOS: open с аргументом-URL (только https?://...).
    • Linux: xdg-open с URL.
    • Windows: cmd /c start "" <URL>.
  • Терминал — только разрешённые команды и аргументы:

    • git: status, pull, push, add, commit, checkout, branch, log, diff, clone, fetch, merge и аргументы по валидатору (URL репозитория, имена веток/путей).
    • npm: install, run, ci, test, build, start, exec, update и допустимые имена скриптов/пакетов.
    • npx: -y, create-*, run, exec и допустимые имена.
    • cargo: build, test, run, check, clippy, fmt, install и допустимые аргументы.
    • python3: -m pytest, pip install и т.п. с ограниченными аргументами.

Любая другая команда или аргумент вне этого списка заблокированы на уровне Tauri (scope shell).

Как включить

Capability personal-automation уже подключён в проекте: окно main получает эти разрешения вместе с базовыми. Ничего дополнительно включать не нужно.

Как ужесточить защиту

  1. Отключить выполнение команд в терминале:
    В src-tauri/capabilities/ удалите или переименуйте personal-automation.json и пересоберите приложение. Останется только открытие ссылок через стандартный shell:allow-open (без явных open/xdg-open/start из capability).

  2. Сузить список команд:
    Отредактируйте personal-automation.json: удалите ненужные блоки {"name": "...", "cmd": "...", "args": [...]} или сократите args до конкретных подкоманд/валидаторов.

  3. Оставить только открытие ссылок:
    В personal-automation.json оставьте только команды open-url, xdg-open-url и при необходимости start-url; блоки git, npm, cargo, python3, npx удалите.


3. Принципы защиты

  • Нет произвольного кода: фронтенд не может выполнить произвольную строку в shell (например, bash -c "..."). Разрешены только команды и аргументы из scope.
  • Allowlist команд: в verify и auto_check на бэкенде выполняются только команды из src-tauri/config/verify_allowlist.json с фиксированными аргументами.
  • Подтверждение пользователя: применение изменений к проекту только после явного подтверждения (user_confirmed).
  • Сеть: все вызовы к LLM/API идут из Rust (reqwest); ключи и URL задаются через переменные окружения, не хранятся в фронтенде.

4. Рекомендации для личного использования

  • Храните .env.openai (ключи API) только локально и не коммитьте их в репозиторий.
  • Используйте один аккаунт/профиль ОС для повседневной работы; не запускайте приложение с правами администратора без необходимости.
  • При необходимости отключите или сузьте personal-automation по инструкциям выше.

См. также: README.md (раздел «Безопасность»), config/verify_allowlist.json.