- Мульти-провайдер: 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>
5.9 KiB
Безопасность и личная автоматизация (терминал + интернет)
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>.
- macOS:
-
Терминал — только разрешённые команды и аргументы:
- 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и т.п. с ограниченными аргументами.
- git:
Любая другая команда или аргумент вне этого списка заблокированы на уровне Tauri (scope shell).
Как включить
Capability personal-automation уже подключён в проекте: окно main получает эти разрешения вместе с базовыми. Ничего дополнительно включать не нужно.
Как ужесточить защиту
-
Отключить выполнение команд в терминале:
Вsrc-tauri/capabilities/удалите или переименуйтеpersonal-automation.jsonи пересоберите приложение. Останется только открытие ссылок через стандартныйshell:allow-open(без явныхopen/xdg-open/startиз capability). -
Сузить список команд:
Отредактируйтеpersonal-automation.json: удалите ненужные блоки{"name": "...", "cmd": "...", "args": [...]}или сократитеargsдо конкретных подкоманд/валидаторов. -
Оставить только открытие ссылок:
В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.