Stage-only Token может остановить прямую публикацию новой версии через AI Agent, но не является полноценной границей безопасности: он всё ещё сохраняет отдельные права записи в npm. На этой неделе используйте трёхэтапную схему — Agent изменяет код, собирает пакет и отправляет его в staged publishing; отдельный ответственный проверяет содержимое и подтверждает выпуск через 2FA; сборочная среда, особенно удалённый Mac, не хранит финальные полномочия. Для CI, который соответствует требованиям OIDC, параллельно оцените Trusted Publishing, поскольку он уменьшает зависимость от долгоживущего токена.
npmAI Agentstaged publishingTrusted PublishingGitHub Actionsбезопасность CI/CD

1Для кого предназначена эта проверка

Эта схема нужна командам, которые разрешают AI Coding Agent менять исходный код, запускать тесты, создавать npm-архив и готовить релиз, но хотят исключить самостоятельный окончательный выпуск.

Она также предназначена для платформенных инженеров, которым нужно выбрать между долгоживущим токеном, staged publishing и Trusted Publishing, а также для команд, собирающих кроссплатформенные пакеты на удалённом Mac и разделяющих рабочую среду с личными полномочиями поддерживающего. Дополнительные материалы по безопасной автоматизации разработки можно найти в разделе руководств vpstix.

Граница решения: «публикация в staged-состояние» означает подготовленный объект для последующей проверки, а не автоматически безопасную версию. Если вы не можете связать архив с коммитом, результатами тестов и ответственным подтверждением, сам статус Stage-only ничего не доказывает.

2Момент приёмки и схема ответственности

Проверять такую интеграцию нужно не по сообщению Agent «релиз готов», а по временной линии с четырьмя раздельными событиями:

  1. Изменение кода — Agent работает только в выделенной ветке или рабочем каталоге.
  2. Сборка и проверка — создаются тестовые результаты, архив пакета и запись о коммите.
  3. Staged publishing — автоматизация передаёт подготовленную версию в ожидающее состояние.
  4. Окончательный выпуск — человек независимо сверяет пакет и выполняет требуемое подтверждение 2FA.

npm описывает staged publishing как процесс, при котором опубликованная версия сначала поступает в staged-состояние и требует последующего действия перед публичной доступностью; это не следует смешивать с обычным немедленным npm publish в официальной документации npm о staged publishing. Изменение, объявленное GitHub 18 сентября 2026 года, также описывает Stage-only Token как средство для более безопасной автоматизации, а не как передачу Agent полного контроля над пакетом в официальном объявлении GitHub Changelog.

Этап Что делает автоматизация Что остаётся за человеком Обязательная запись
Код Меняет файлы, запускает тесты Проверяет область изменения Идентификатор коммита и diff
Сборка Формирует архив и метаданные Сверяет состав архива Хэш или сохранённый tarball
Подготовка Отправляет версию в staged publishing Проверяет номер версии и источник Идентификатор staged-операции
Выпуск Не получает финальное право публикации Выполняет подтверждение 2FA Журнал одобрения и субъект
После выпуска Не меняет опубликованный объект без нового допуска Проверяет теги и доступность Результат постпроверки

Практический вывод для поддерживающего прост: Stage-only Token стоит выдавать только компоненту подготовки. Нельзя считать допустимым сценарий, в котором тот же Agent получает токен, личную сессию npm, секрет 2FA и доступ к рабочему каталогу с готовым релизом.

3Stage-only Token и остаточные права

Официальная документация npm разделяет типы токенов и их области применения; сведения о том, какие операции доступны каждому токену, нужно проверять в актуальной справке, а не выводить из названия «stage only» в документации npm об access tokens. Для создания и просмотра токенов npm также предусматривает отдельный интерфейс управления, поэтому в журнале приёмки следует сохранять тип, область, дату создания и факт отзыва в документации npm о создании и просмотре access tokens.

Подтверждённая граница на 19 сентября 2026 года выглядит так:

  • прямой npm publish с Stage-only Token должен быть отклонён;
  • окончательный выпуск требует действия поддерживающего с 2FA;
  • токен не превращается в read-only-доступ;
  • у него остаются отдельные права записи, включая операции с dist-tag и устареванием версий;
  • поэтому токен способен повредить маршрутизацию версий или метаданные пакета, даже если не может самостоятельно выпустить новую версию.

Последний пункт особенно важен для AI Agent: запрет одной операции не означает запрет всех опасных действий. Agent, который может переместить тег latest, пометить версию как устаревшую или изменить объект за пределами ожидаемого сценария, всё ещё располагает существенным влиянием на потребителей пакета.

Проверка Ожидаемый результат Если результат иной
Прямая публикация новой версии Отклоняется без финального подтверждения Немедленно отозвать токен и остановить пилот
Подготовка staged-версии Создаётся объект для ручной проверки Проверить тип токена и пакетную область
Изменение dist-tag Разрешение фиксируется и ограничивается политикой Не считать токен минимальным
Устаревание версии Действие отдельно проверяется и журналируется Сузить полномочия или отказаться от выдачи Agent
Доступ к другим пакетам Отсутствует либо явно обоснован Пересоздать токен с меньшей областью

До 19 сентября 2026 года npm указывает январь 2027 года как целевой срок удаления возможности прямой публикации с токенами, обходящими 2FA. Это план, а не неизменное обязательство; срок нужно повторно сверить перед миграцией в официальном описании Stage-only Token.

4Контур AI Coding Agent

Для команды разработки полезно разделить не только права, но и действия. Agent может генерировать код, обновлять тесты, выполнять сборку и формировать предложение релиза. Однако проверка номера версии, содержимого files-набора, лицензии, встроенных секретов и фактического diff должна оставаться отдельной процедурой.

Если в prompt, MCP-инструменте, shell-скрипте или внутреннем плагине присутствует возможность вызвать операции с тегами, устареванием или настройками пакета, это нужно тестировать напрямую. Нельзя ограничиться проверкой того, что команда npm publish вернула отказ: вредный сценарий может использовать другой разрешённый метод.

Для каждого задания задайте четыре постоянных атрибута:

  • отдельный рабочий каталог, не используемый параллельной задачей;
  • конкретный идентификатор репозитория и ветки;
  • ожидаемый пакет и диапазон допустимых изменений;
  • отдельную запись staged-операции, связанную с коммитом.

Снимок рабочей среды, логи Agent и артефакты CI не должны содержать токен в открытом виде. Удаление секрета из переменной окружения после завершения команды недостаточно, если он уже попал в вывод, кэш, диагностический архив или контекст дочернего Agent.

Для сценариев с GitHub Actions полезно включить в обязательную проверку не только YAML-файл, но и права job, наследование секретов, журналы шагов и поведение повторного запуска. Дополнительные материалы по безопасной автоматизации разработки доступны в разделе руководств vpstix, но описание среды не заменяет собственную проверку токенов и журналов.

5Stage-only против Trusted Publishing

Выбор между npm staged publishing и Trusted Publishing зависит не от того, какой термин выглядит безопаснее, а от фактической архитектуры CI.

Trusted Publishing использует доверие между npm и поддерживаемым провайдером CI через OIDC, вместо постоянного npm-токена в секретах. При этом необходимо проверить тип CI, настройки workflow, субъект OIDC, привязку к конкретному пакету и возможность ручного одобрения. npm перечисляет поддерживаемые условия и порядок настройки в документации Trusted Publishing.

Условие команды Предпочтительный путь Почему
CI поддерживает нужный OIDC-сценарий и пакет можно точно привязать к workflow Сначала пилотировать Trusted Publishing Меньше долгоживущих секретов в CI
Требуется staged-проверка перед каждым выпуском Stage-only Token с ручным одобрением Автоматизация готовит объект, человек решает о выпуске
OIDC пока не поддерживается или не проходит организационную проверку Временно сохранить ограниченный токен Можно работать до миграции, если права и среда изолированы
Есть критичные пакеты и сложный процесс восстановления Двухконтурная схема Один путь используется для пилота, другой — как контролируемый резерв
Нельзя доказать, какой workflow инициировал публикацию Не включать автоматизацию Сначала восстановить атрибуцию и аудит

GitHub сообщил о возможности иметь несколько конфигураций Trusted Publishing для npm 3 сентября 2026 года, что может упростить резервирование workflow, но не устраняет необходимость контролировать привязку и права в официальном обновлении GitHub о нескольких конфигурациях. OIDC не означает «без подтверждения», а Stage-only не означает «без секрета»: оба механизма требуют отдельной проверки выпуска и среды.

6Проверка безопасности и границ секрета

Команде безопасности следует проводить тест не в рабочем процессе публикации, а в изолированном тестовом пакете. Цель — получить отрицательные доказательства и сохранить их:

  • попытка прямой публикации отклонена;
  • попытка изменить dist-tag либо устареть версию записана и имеет ожидаемый результат;
  • доступ к чужому пакету отсутствует;
  • токен не отображается в логах, кэше, снимке рабочего пространства или сообщении дочернему Agent;
  • отзыв токена делает следующий запуск неработоспособным;
  • после ротации старое значение не даёт доступа;
  • staged-архив можно сопоставить с конкретным коммитом и результатом тестов.

Важна и сетевая граница. Если Agent имеет произвольный исходящий доступ, он может передать секрет не через npm-команду, а через сторонний запрос. Поэтому ограничение публикации нужно сочетать с контролем сети, списком разрешённых инструментов, коротким временем жизни рабочей среды и запретом передачи секретов в контекст моделей.

Опыт приёмки: проверяйте не только успешный сценарий, но и восстановление после ошибки. Если нельзя быстро отозвать токен, удалить рабочий каталог и доказать, какой архив был проверен, пилот ещё не готов к реальному пакету.

7Удалённый Mac и разделение ролей

При наличии нативных зависимостей macOS, кроссплатформенных бинарных файлов или Apple-инструментов удалённый Mac может быть сборочным узлом, но не местом хранения личности финального утверждающего. Сборочная машина должна получить только тот секрет, который нужен для staged-операции, и только на время задания.

Перед запуском проверьте:

  1. рабочий каталог создаётся для конкретного задания и не наследует старые файлы;
  2. исходный коммит фиксируется до установки зависимостей;
  3. пакет собирается в отдельный каталог;
  4. tarball проверяется содержательно — включая неожиданные файлы, скрипты установки и встроенные ключи;
  5. результаты тестов сохраняются вместе с идентификатором сборки;
  6. staged-операция связывается с архивом и коммитом;
  7. после завершения удаляются токен, кэш с секретами, временные файлы и снимки среды;
  8. финальное 2FA-подтверждение выполняется вне сборочного задания.

Не смешивайте «сборка на Mac прошла» с «пакет разрешено выпускать». Даже корректный нативный бинарный файл может быть собран из неправильного коммита, содержать лишний файл или пройти тесты в среде, не совпадающей с ожидаемым окружением потребителя.

8Приёмочная ведомость для пилота

Используйте этот список перед включением AI Agent для реального пакета:

  • [ ] Тестовый запуск подтвердил отказ прямой публикации новой версии.
  • [ ] Окончательное подтверждение выполняется человеком с отдельной 2FA-идентичностью.
  • [ ] Agent не получает пароль, сессию npm или резервный код подтверждающего.
  • [ ] Проверены операции с dist-tag и устареванием версий.
  • [ ] Токен ограничен нужным пакетом и не даёт лишний доступ.
  • [ ] Коммит, tarball, результаты тестов и staged-запись связаны между собой.
  • [ ] Логи, кэш, артефакты и контекст дочерних Agent проверены на утечки.
  • [ ] Для GitHub Actions зафиксированы права job, источник OIDC или место хранения токена.
  • [ ] Для удалённого Mac рабочий каталог создаётся заново и удаляется после задания.
  • [ ] Есть документированный отзыв и ротация токена.
  • [ ] После неудачного запуска команда может определить, какой объект нужно отозвать или не выпускать.
  • [ ] Для критичного пакета предусмотрены независимая повторная проверка и второй утверждающий.

Если хотя бы один пункт про источник архива, остаточные права или очистку среды не выполнен, действие должно быть одним из двух: ограничить пилот тестовым пакетом либо оставить публикацию полностью ручной. Нельзя компенсировать отсутствующее доказательство словами Agent о том, что он «ничего лишнего не делал».

9Решение для разных владельцев

Поддерживающему небольшого пакета обычно подходит ограниченное включение: Agent подготавливает staged-версию, вы проверяете diff и tarball, затем отдельно выполняете 2FA. Это не отменяет регулярную проверку прав токена.

Для пакета с большим числом пользователей добавьте независимую повторную сборку, отдельную проверку содержимого и правило двух человек. Там, где смена dist-tag или устаревание версии может повлиять на широкий круг потребителей, остаточные права Stage-only Token следует считать значимым риском, а не технической мелочью.

Платформенной команде разумно выбрать один из трёх режимов:

  • ограниченное открытие — Stage-only для подготовки, ручной выпуск и короткий пилот;
  • двухконтурная миграция — Trusted Publishing для совместимого CI, Stage-only как временный путь или резерв;
  • продолжение ручного выпуска — если нельзя разделить рабочую среду, восстановить источник архива или отозвать секрет.

Для решения о Trusted Publishing ориентируйтесь на фактическую поддержку вашего CI и способность доказать, какой workflow получил право действовать. Для решения о Stage-only ориентируйтесь на отрицательные тесты и остаточные разрешения, а не на само название токена.

Если сейчас вы используете один удалённый Mac, общий секрет и ручной запуск из той же сессии, это слабее описанной схемы: секрет трудно отделить от сборки, артефакт — от процесса, а подтверждение — от автоматизации. В таком случае аренда изолированной Mac-среды может быть удобнее для временных нативных сборок и проверочных задач, но она не заменяет npm-политику и не должна получать личные 2FA-полномочия. Перед пилотом сопоставьте требования к среде с описанием инфраструктурных решений vpstix, затем ограничьте тест только пакетами, для которых вы способны восстановить полный журнал.

На 19 сентября 2026 года безопасный практический вывод таков: Stage-only Token подходит для автоматической подготовки и staged-публикации, но не для передачи AI Agent полного управления npm-пакетом. Если ваша команда не может подтвердить отказ прямого выпуска, проконтролировать оставшиеся права записи, сохранить связь tarball с коммитом и удалить секрет из удалённого окружения, включение нужно отложить. Если OIDC поддерживается вашим CI, Trusted Publishing следует оценивать первым; если нет — применяйте Stage-only только вместе с ручным 2FA и изоляцией.

Проверка выполнена по документации npm о токенах, staged publishing и Trusted Publishing, а также официальным обновлениям GitHub Changelog. Повторную проверку запланируйте при изменении прав Stage-only, расширении поддержки OIDC, появлении новых типов self-hosted Runner или пересмотре целевого срока отказа от обходящих 2FA токенов.

10Читать также

Удалённый узел vpstix M4

Изолируйте публикацию npm на выделенном Mac

vpstix предоставляет физически выделенный Mac mini с нативным Apple Silicon для сборки и проверки пакетов без передачи AI Agent права окончательного выпуска.

Арендовать Mac mini M4 Сравнить тарифы M4