Коротко: Если Codex получает Access denied при чтении проекта, сравни одну команду по одному файлу в обычном PowerShell и внутри агента. Затем проверь действующие разрешения. Успешное чтение снаружи не объясняет причину отказа внутри. Отключать защиту ради этой проверки не нужно.
Что означает Access denied при чтении в Codex
Речь про агента OpenAI Codex, запущенного командами прямо в Windows, без WSL2. Такой способ работы называется CLI. Песочница ограничивает доступ команд агента к файлам и действиям. Программа запустилась, но команда чтения проекта возвращает Access denied, «Отказано в доступе» или UnauthorizedAccessException. Если не запускается сам codex.exe, начни с установки Codex на Windows. WSL2 использует Linux-песочницу, поэтому команды и выводы этого разбора нельзя переносить туда без проверки среды.
Такой симптом описан в обращении 53687 от 13 октября 2026 года. Автор сообщил, что CLI 0.162.1 не читает разрешённую рабочую папку на H:, хотя обычный PowerShell читает те же пути. На момент чтения 15 октября обращение открыто. Автор прямо пишет, что причина не установлена: указанные в отчёте exFAT и запрошенный режим mxc её не доказывают. Какой режим действительно использовался, автор тоже не подтвердил.
Собственного воспроизведения на Windows здесь нет. Команды и ограничения сверены с документацией OpenAI и Microsoft 15 октября 2026 года. Результат проверки ниже нужно получить на своём компьютере; готового подтверждённого исправления этой ошибки в обращении нет.
Сначала проверь чтение вне Codex
Выбери в проблемной папке существующий непустой текстовый файл с короткой безопасной строкой. Не используй ключи, пароли, .env или клиентские документы. Если подходящего файла нет, остановись: давать агенту доступ к секретам ради теста не стоит.
Нажми «Пуск», найди PowerShell и открой его без запуска от администратора. Затем выполни три команды. H:\CodexReadTest\probe.txt - условный путь: замени его своим безопасным файлом и сохрани точно тот же путь для второй проверки.
Get-Location
Get-Item -LiteralPath 'H:\CodexReadTest\probe.txt' -ErrorAction Stop
Get-Content -LiteralPath 'H:\CodexReadTest\probe.txt' -TotalCount 1 -ErrorAction Stop
По документации Microsoft, Get-Location показывает текущую папку PowerShell, а Get-Item показывает сведения о файле по указанному пути. Get-Content читает содержимое; -TotalCount 1 ограничивает вывод первой строкой. Длина этой строки в байтах не ограничена, поэтому короткий несекретный файл выбирается заранее.
Признак успешного чтения - появилась ожидаемая первая строка файла без ошибки. Отсутствие ошибки у одного Get-Item подтверждает получение сведений о файле, но не чтение содержимого. Если Get-Content отказывает уже здесь, расхождение с Codex пока не установлено: сначала уточни путь и возможность чтения обычным пользователем.
Повтори ту же команду внутри Codex
Коротко: Для сравнения нужны один файл, его полный путь от буквы диска и одинаковая команда PowerShell. Смена папки, оболочки или профиля между проверками добавляет новое условие и мешает понять отказ.
- В той сессии Codex, где возник отказ чтения, введи
/status, затем/debug-config. Это команды внутри интерфейса Codex, не строки для PowerShell. Запиши показанные разрешения и конфигурацию, неизвестные поля оставь неизвестными. Не публикуй полный вывод без просмотра: там могут быть частные пути и настройки. - Скопируй в Codex три команды выше со своим путём. Перед ними вставь: «Выполни эти команды в PowerShell. Ничего не записывай, не создавай и не удаляй. Права и настройки не меняй, расширение доступа не запрашивай. Покажи фактическую оболочку, рабочую папку, точную команду и результат. При отказе остановись».
- Убедись по показанному вызову, что агент действительно использовал PowerShell и нужный путь. Если команда не запустилась или оболочка другая, сравнение чтения ещё не состоялось. Сохрани ошибку этого шага отдельно.
Не одобряй расширение доступа в середине сравнения: результат уже будет получен при других условиях. Подробно разницу между песочницей и подтверждениями разбирает руководство по работе с Codex.
Для отдельной контрольной проверки документация CLI позволяет запустить новый сеанс только для чтения:
codex --cd 'H:\CodexReadTest' --sandbox read-only --ask-for-approval never
Папку тоже замени своей. После запуска повтори те же команды. Учти: это новый сеанс с другим профилем, его результат дополняет исходную проверку. Параметр never не отключает песочницу. Режим только чтения относится к действиям в проекте; клиент может вести собственные служебные журналы.
Что показывают два результата
Сравни именно Get-Content по одному файлу. Таблица помогает выбрать следующий шаг, не назначая причину по одному сообщению.
| Обычный PowerShell | Команда внутри Codex | Что установлено и что делать |
|---|---|---|
| Читает строку | Получает отказ доступа | Чтение различается между двумя средами. Сохрани точный вызов и проверь активные разрешения |
| Получает отказ | Получает отказ | Файл не читается и вне Codex. Уточни путь и доступ обычного пользователя |
| Читает строку | Читает ту же строку | Этот файл при этих условиях доступен. Другие файлы и весь исходный сбой ещё не проверены |
| Любой результат | Команда не запускается | Проверка содержимого не состоялась. Разбирай запуск команды отдельно |
Подход «сначала воспроизвести, затем искать причину» есть и в наборе Superpowers, где описан systematic-debugging. Устанавливать набор ради этих команд не требуется.
Хочешь разобраться, какие действия разрешать агенту в своих проектах? В ClaudeBase есть разбор «Рабочее окружение: правила проекта и разрешения» и шаблоны CLAUDE.md и AGENTS.md. Открой страницу доступа ClaudeBase, чтобы сверить программу с задачами своего проекта. Программа открыта без оплаты; материалы и подключение базы доступны после оплаты.
Почему read-only не открывает любую папку
По документации OpenAI, при отказе чтения нужно проверить активный профиль разрешений, ограничения организации и права Windows на файлы. Для управляемого рабочего компьютера такое ограничение разбирают с администратором. Само слово read-only не выдаёт доступ ко всем дискам.
Профиль задаёт доступные пути и операции. Политика подтверждений определяет, когда агент спрашивает о расширении доступа. Поэтому исчезновение вопросов после never не подтверждает, что файл стал доступен. Параметр --add-dir в справочнике CLI описан как дополнительный доступ на запись; оснований считать его универсальным способом устранения отказа чтения нет.
В актуальной Windows-документации три реализации песочницы:
mxcиспользует нативную изоляцию процессов без дополнительных учётных записей Windows;elevatedтребует одобрения администратора при настройке, но команды выполняются без прав администратора;unelevatedдаёт более слабую сетевую изоляцию и не поддерживает запрещённые для чтения пути.
Поэтому утверждение «Codex всегда работает другим пользователем» слишком широкое. Запрошенная настройка и фактический режим исполнения могут различаться; записывай только подтверждённое состояние.
Не переключай режимы наугад, не выдавай права Everyone и не форматируй диск. Наличие exFAT в чужом отчёте не доказывает причину твоей ошибки, а смена нескольких настроек сразу лишит тебя исходного сравнения.
Что сохранить, если отказ остался
Подготовь короткий локальный отчёт. Никому не отправляй его автоматически: сначала убери личные сведения и секреты.
Клиент: Codex CLI, версия ...
Windows: версия и номер сборки ...
Среда: нативный PowerShell / другая ...
Фактический режим песочницы: mxc / elevated / unelevated / неизвестен
Активные разрешения и ограничения организации: ... / неизвестны
Путь безопасного файла: ... (обезличить одинаково в обоих результатах)
Команда чтения: ...
Обычный PowerShell: первая строка прочитана / точная ошибка ...
Внутри Codex: первая строка прочитана / точная ошибка ...
Отличия контрольного сеанса от исходного: ...
OpenAI также просит CODEX_HOME/.sandbox/sandbox.log, выбранную реализацию песочницы, ошибку и сборку Windows. CODEX_HOME обозначает папку данных Codex. Просмотри журнал перед передачей: публичный отчёт не должен содержать частные пути и данные проекта. Каталог CODEX_HOME/.sandbox-secrets/ отправлять нельзя.
Если чтение позже заработало, повтори исходный вызов по тому же файлу при исходных условиях и сохрани результат. Успешный тест другого файла или запуск codex --version не подтверждает, что доступ к проекту исправлен.
Источники
Документация прочитана 15 октября 2026 года. Команды на Windows автором не выполнялись.
- OpenAI: Windows sandbox, проверка чтения и FAQ.
- OpenAI: песочница и подтверждения действий.
- OpenAI: справочник параметров CLI.
- Microsoft: Get-Content, Get-Item и Get-Location.
- Обращение 53687 в репозитории OpenAI Codex - сообщение пользователя с неустановленной причиной, не инструкция исправления.