---
name: onec_rdp_bridge
description: "Мост Claude↔удалённая 1С (Windows App/RDP, РФ-стол, без прав админа) без следа для админа — скилл 1c-rdp-e2e"
metadata: 
  node_type: memory
  type: project
  originSessionId: 7d4fd1f7-22b4-4739-9ce8-04ab0a0f4544
---

Управление удалённой 1С на Windows-столе (Windows App/RDP, РФ IP, прав админа нет) с Mac БЕЗ серверного следа. Скилл `~/.claude/skills/1c-rdp-e2e/` (дополняет [[onec_epf_skill]]).

**Принцип:** сервер видит только (а) человеко-подобный ввод в RDP (скрин окна + cliclick/osascript) и (б) буфер обмена — то же, что делает сам юзер. Никаких установок/туннелей/новых проброшенных дисков. Трафик к Anthropic только с Mac.

**Каналы:** скриншот окна Windows App (`screencapture`), клики/клавиши (`cliclick`), доставка кода = буфер обмена → Ctrl+V в EDT/конфигуратор (юзер подтвердил: канал = clipboard, есть EDT + правка папок проектов). Чтение результата = Ctrl+C в 1С → pbpaste.

**Предусловие (разово, GUI-грант, админ сервера НЕ видит):** `Claude.app` нужны 2 разрешения — **Запись экрана** (после включения ПЕРЕЗАПУСК Claude) и **Универсальный доступ**. Проверка: `tools/preflight.sh`.

**Единственный неустранимый след** — записи 1С-журнала об открытии внешней обработки (штатное действие разработчика, не маскируем).

e2e: 3a тихий (GUI-клики+скрины, по умолч.) / 3b быстрый (`/TESTMANAGER`+`/TESTCLIENT`+агент-обработка, opt-in, если журнал/профили безопасности базы позволяют).

**Выбрано комбо 1** (агент-обработка в 1С ↔ буфер обмена; НОЛЬ грантов macOS, не трогаем фокус Mac, автономно). Отказ от Screen Recording/Accessibility — юзер хочет и «не мешать мне за Mac», и «ноль следа для админа» одновременно → это возможно только комбо 1 (трилемма: автономность+не-мешать+ноль-следа — выбрать 2; комбо 1 жертвует лишь пиксельным взглядом на вёрстку). e2e работает через штатный движок 1С `/TESTMANAGER`+`/TESTCLIENT`, вердикт текстом.

Несущий риск: у 1С НЕТ чистого API буфера ОС из управляемого клиента; обход = COM `htmlfile` clipboardData (тихо, в процессе) — но профили безопасности могут резать COM. Проверяется пробой.

**Разворот на git-транспорт (2026-07-02):** юзер выбрал git-канал, но требования = конфиденциально + всегда работает в РФ + НЕ на своих серверах. → отсекает gitlab.com/github (нестабильны РФ) и self-host. Решение: **РФ-приватный хостинг gitverse.ru (Сбертех) или gitflic.ru** (оба доступны с Mac, TLS ок). Транспорт: я пушу с Mac по токену → в сессии EDT встроенным Git (EGit, CLI не нужен) клонит/пуллит по HTTPS → результаты коммитятся обратно, я пуллю. Честно: DLP «код за периметр» + возможный TLS-перехват конторы остаются; РФ-хост тише github по гео-флагу. COM-проба буфера больше НЕ нужна (канал не локальный). Регистрацию/репо/токен делает юзер (нужен РФ-аккаунт).

**Секреты перед git (2026-07-02):** хэшировать НЕ нужно (хэш ломает используемые креды). В 1С значения = ДАННЫЕ (записи в базе), в конфиг/EDT-выгрузку НЕ попадают — только структура. Справочник юзера = `аСлужебныеКонстанты` (префикс «а»): реквизиты Значение/ХранимоеЗначение/Данные, PasswordMode=false; Predefined.xml несёт только Name/Code/Description (без значений); код чист. Т.е. секреты в git не едут, если класть ТОЛЬКО конфигурацию (не .dt-дамп, не выгрузку данных). Реальные векторы утечки: хардкод в чужом модуле, случайный дамп данных. Гейт: `tools/secret_scan.py` (Python, надёжнее BSD-grep с кириллицей) — ловит секрет=«литерал»/conn-string/длинные ключи/data-файлы, маскирует, exit≠0; + `examples/gitignore_1c.txt` + `examples/pre-push.sh`. Прогонять по РЕАЛЬНОЙ выгрузке из сессии до push.

**Найденный хардкод (скан локальной НоваяКонфа, 2026-07-02):** 8 мест в 4 объектах. Кластер A = SQL-креды ADODB (Сервер/ПользовательСервера/ПарольСервера/БазаСервера): `DataProcessors/аЗагрузкаИзWEB/Ext/ObjectModule.bsl` (5267,5342,5676), `CommonModules/аСобытия/Ext/Module.bsl` (~564), `Documents/аРеестр/Forms/ФормаДокумента/Ext/Form/Module.bsl` (~3844). Кластер B = отпечатки сертов Астрал по ИНН: `CommonModules/аОтправкаДокументовАстралДоки/Ext/Module.bsl` (1723-1727, СБ/МСК/НН). Рефактор: вынести в аСлужебныеКонстанты — A через предопределённый ключ + реквизиты Значение/2/3/Данные + аксессор ПараметрыПодключенияSQL; B через ТЧ Таблица (Данные=ИНН,Значение=хеш) + существующая ПолучитьТаблицуСлужебнойКонстанты. ПОРЯДОК: рефактор+проверка интеграций ДО первого git-push (иначе секреты навсегда в истории git). Локальная копия может отличаться от remote — финальный скан по реальной выгрузке.

**Полная инвентаризация logpass (агр.скан, 2026-07-02):** 45 «мест», но ИСТИННЫХ секретов мало — остальное адреса/URL/ИНН (не секрет). Настоящие: (1) SQL-креды Сервер/Пользователь/Пароль/База ~5 inline-блоков (аЗагрузкаИзWEB×3, аСобытия, аРеестр форма); (2) SMTP ПользовательSMTP/ПарольSMTP (аЗагрузкаИзWEB:5036); (3) Астрал-токен захардкожен в `ПолучитьТокенАстралДоки()`=`Возврат "лит"`, СКОПИРОВАН в 5 файлах (аОбновлениеСтатусовПриглашений, аОбновлениеСпискаПриглашений, AstralDoki 2 формы, аОтправкаДокументовАстралДоки); (4) `ПолучитьИДОрганизацииАстралДоки()` + ХешСерта — хардкод ИД/отпечатков по ИНН. Рефактор: единый паттерн геттер→аСлужебныеКонстанты — ЗначениеКонстанты(Имя)→.Значение, ПараметрыSQL(Имя)→Структура(Значение/2/3/Данные), ИНН-мапы через ТЧ Таблица+ПолучитьТаблицуСлужебнойКонстанты. Адреса/URL НЕ секрет — не выносим (scope). Kafka/Финоко — кредов нет (внеш.компонента / текст MIT-лицензии дал ложные срабатывания). Сканер умеет --aggr (ловит логин/сервер/url/токен/хеш=лит), в tools/secret_scan.py.

Статус 2026-07-02 (ранее): собрана микро-проба `~/Desktop/ПробаБуфераОбмена.epf` (компиляция платформой :8788 чистая, HTTP 200). Ждёт: (1) как доставить .epf в RDP-сессию — clipboard-file-copy Windows App под вопросом; (2) прогон пробы юзером → подтвердить COM-доступ к буферу ОС. Генератор пробы: scratchpad/gen_probe.py. Скилл-скрипты rdp_*.sh написаны для комбо 2 (пока не нужны). План: ~/.claude/plans/snuggly-floating-whisper.md
