ShiftStage

Агент для macOS

Телефон просит. Mac решает.

Удалённый доступ, который нельзя проверить, — это доверие на слово. Всё, что на этой странице, задаётся на Mac, в окне самого агента, — и приложение у вас в кармане не может ни изменить этого, ни от этого спрятаться.

Что держит в руках владелец

Девять рычагов, и каждый — выключатель, который видно, а не обещание, в которое надо поверить.

Связывание

Устройство входит один раз и вашей рукой

Агент показывает QR-код и набираемый код с одноразовым секретом. У приглашения есть срок, и оно умирает при первом же использовании.

  • Обе стороны вычисляют отпечаток канала и показывают его. Связывание завершается, только когда вы подтвердили на обеих; расхождение прерывает его и попадает в журнал безопасности агента.
  • Агент держит список: имя, тип устройства, когда связано, когда подключалось в последний раз, отпечаток.
  • Отозвали устройство — его живые соединения рвутся немедленно, выданные ему материалы перестают работать, а приложение стирает свой кэш этого Mac.
  • Всё это работает в локальной сети вообще без внешней инфраструктуры.

Область видимости

Mac отдаёт папки, а не файловую систему

Вы регистрируете каталог под человеческим именем. Всего, что вне его, для телефона не существует.

  • Любая файловая, поисковая и git-операция проверяется по этой границе после разрешения символических ссылок — ссылка наружу не становится дверью.
  • Пространство бывает «только чтение». И отдельная папка или файл внутри записываемого — тоже; при расхождении действует более строгий режим.
  • Правила задаются на Mac и больше нигде. Телефону сообщается действующий режим каждого объекта, и он показывает его до того, как вы попробуете записать.
  • Отдельный выключатель решает, могут ли файлы пространства вообще покидать Mac. Запрет означает: не сохраняются на устройстве, даже не предлагаются к сохранению, не отдаются другим приложениям — а сохранённое раньше удаляется.
  • Удалили пространство — вместе с ним закрылись все его сессии и подписки.

Разрешения

Ничего опасного не включено из коробки

Завершение процессов, управление долгоживущими, ввод секрета в запрос sudo, продолжение сессии терминала Mac, предпросмотр локальных серверов, изменение баз данных и чтение баз приложений в симуляторах iOS с телефона — семь отдельных выключателей, и все семь выключены.

  • Выключение действует немедленно: начатая операция отклоняется, а управляемые процессы продолжают работать и остаются видны на Mac.
  • Отказ называет причину. «Выключено на Mac» отличимо от «не разрешено правами» и от «процесс не ваш» — и приложение говорит, где этот выключатель.
  • Секрет для sudo отпирается Face ID на устройстве и идёт отдельной операцией, а не нажатиями в потоке. Владелец Mac разрешает это отдельно; по умолчанию выключено.
  • Пространство «только чтение» действует и на терминал — вместе с процессами, которые он породил, — а если наложить запрет не удалось, вам это скажут, а не дадут предположить.

Досягаемость

Одно устройство разом, пока вы не решите иначе

По умолчанию с агентом работает ровно одно устройство. Настройка идёт от одного до пяти или снимается вовсе. Место занимает устройство, а не соединение.

  • Устройство сверх предела получает отказ с названной причиной, а не тихо отваливается.
  • Ретранслятор запрещается отдельно для каждого агента: только прямой и локальный путь — или никакого.
  • Список узлов Rendezvous — настройка агента, а не то, что зашито в приложение. Пустой список означает «только локальная сеть», и это поддерживаемый способ работы, а не поломка.
  • Узел из опубликованного каталога попадает в рабочий список только вашим действием. Само обращение к каталогу выключается, и продукт без него полностью работоспособен.

Допуск по месту

Только устройство, назвавшее, где оно

Включите — и соединение установит только то устройство, что назвало своё место. Устройству с выключенной или запрещённой геолокацией приходит отказ: с причиной и с указанием, где это включается.

  • Место записывается в журнал доступа со своей точностью и пометкой «со слов устройства» — потому что это ровно то, что есть: со слов, а не проверено. Агент не делает вида, что иначе.
  • Отказ по отсутствию места записывается точно так же, как допуск. Запись остаётся в обоих случаях.
  • Это допуск, а не слежка: хранится сказанное в момент соединения и ничего в промежутках между ними.

Журнал доступа

Каждая операция — и никогда её содержимое

Агент записывает, чего попросило подключённое устройство: момент, устройство, вид операции, чем кончилась и предмет, названный самим запросом.

  • Предмет — это путь, ветка, процесс, строка поиска, объём переданного: то, что назвал запрос.
  • Подключение и отключение записываются наравне с операциями.
  • Никогда: содержимое файлов, вывод команд, ввод терминала, ни слова из разговора с AI. Ни при каком уровне подробности.
  • Повтор той же операции с тем же предметом от того же устройства внутри окна увеличивает счётчик, а не добавляет строку.
  • Ограничен сроком и объёмом; первыми уходят самые давние записи.
  • Отбор по устройству, по виду, по куску предмета. Выгрузка файлом, чтобы разбирать снаружи. Выключение — и само выключение пишется в этот же журнал.
  • Сбой записи никогда не отменяет и не задерживает операцию, которую он собирался записать.
  • В протоколе нет операции чтения журнала. Его нельзя забрать ни телефоном, ни нами, ни кем-либо ещё: он читается на Mac тем, кто за ним сидит.

Копии

Mac слышит, что стало с отданным файлом

Устройство сообщает судьбу полученного: сохранено на устройстве, отправлено в другое приложение, удалено.

  • Когда система называет приложение-получателя, отчёт называет его тоже.
  • Заявленная запись помечена как заявленная и остаётся отличимой от того, что агент наблюдал сам, — и в журнале, и в интерфейсе.
  • Отчёт переживает обрыв связи и уходит при следующем соединении.
  • И интерфейс говорит неудобное вслух: отсутствие отчёта не означает отсутствия копии. Гарантия, которую нельзя обеспечить, здесь не выдаётся за гарантию.

Apple Watch

У часов свой ключ, и подписываете за них вы

У часов собственная пара ключей. Полномочия им делегирует iPhone, и агент принимает эту делегацию только после подтверждения на Mac.

  • У делегации есть срок, и она обновляется при контакте с iPhone.
  • Отзыв iPhone лишает силы всё, что он делегировал.
  • Что позволено запястью, решает риск: отклонить можно всегда; подтвердить — при низком риске, при среднем нужен поворот коронки, при высоком дело уходит на телефон. Запрос, распознанный лишь эвристикой, подтверждается с часов только при низком риске.
  • Файловые операции и git с часов недоступны вовсе.

Питание

Mac не засыпает, потому что от запертого Mac толку нет

Пока агент работает, он удерживает Mac от блокировки экрана. Запертый Mac не может собрать свои ключи, и соединение не встаёт — поэтому это умолчание, а не жёсткое правило.

  • Удержание выключается, и тогда запертый Mac отказывает в соединении, называя именно эту причину, а не отваливаясь общей ошибкой.
  • Свой журнал привилегированных операций агент ведёт на Mac отдельно от журнала доступа.

Как выглядит строка журнала

Читается на Mac, остаётся на Mac и подробнее этого не бывает.

14:32:09  iPhone «Денис»  files.read    ~/projects/api/docs/audit.md
14:32:11  iPhone «Денис»  files.keep    сохранено на устройстве — со слов устройства
14:33:40  iPhone «Денис»  git.commit    api · main · 4 файла
14:41:02  Apple Watch     ai.decide     Codex · разрешено · риск low
14:52:18  iPhone «Денис»  connect       Пхукет ±40 км · со слов устройства
15:02:55  iPad «Студия»   files.write   отказ — пространство только для чтения

Ни содержимого файлов. Ни вывода команд. Ни ввода терминала. Ни разговора с AI. Не потому, что мы решили не класть их в файл, — а потому, что агент их туда не пишет.

Почему это и есть та половина, за которую платят

Любой инструмент удалённого доступа просит доверия. Большинство отвечает «мы не смотрим ваши данные» и оставляет вам верить.

Здесь ответ — устройство, а не фраза. Права живут на машине, которая ваша. Граница проверяется там же: после символических ссылок, до операции. Запись хранится там же, и в протоколе нет глагола, которым её можно было бы унести.

Подписка открывает расстояние и масштаб. Она не продаёт вам политику — политика и так была вашей.

Посмотреть, что это даёт за рабочий день · вопросы, которые задают следом

Ваша машина.
Ваши правила. Ваша запись.

Бесплатно для одного Mac в своей сети.