Блог

Почему Claude Code не видит файлы проекта и что делать

Markdown

Разбираем, почему Claude Code не находит файлы проекта: запуск из другой папки, содержимое подпапок и правила .gitignore. Показываем, как проверить рабочую директорию и открыть доступ через /add-dir, /cd и настройки.

Читать статью полностью

Просишь Claude Code изменить файл, а он сообщает, что такого файла нет, или редактирует не тот документ. Ты проверяешь папку — файл на месте, но Claude словно его не замечает.

Обычно здесь нет поломки: Claude не просматривает весь компьютер. По умолчанию ему доступна папка, из которой запущена сессия. Запуск в соседней папке или ниже корня проекта может оставить нужные файлы вне рабочей области. Запуск из родительской папки, например домашней, даёт более широкую область, а не делает вложенный проект недоступным. Ниже разберём, как это устроено и как предоставить доступ к нужным файлам. Команды и параметры приведены по официальной документации Claude Code; сведения актуальны на начало сентября 2026 года.

Дополнительные материалы по настройке инструментов доступны в документации Ailoot.

Почему Claude Code не видит часть файлов проекта?

Краткий вывод

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

По умолчанию Claude Code использует папку, в которой вы запустили команду claude. Официальная документация прямо описывает это правило.

По умолчанию Claude получает доступ к файлам в каталоге, из которого вы его запустили.

— Официальная документация Claude Code: настройка разрешений

Эта папка и есть рабочая область. В её пределах Claude может сразу читать файлы, искать фрагменты кода и выполнять задачи с документами. Содержимое за границами рабочей папки по умолчанию закрыто: Claude не заглядывает в соседние каталоги, папку уровнем выше или на другой диск, пока вы не откроете ему доступ.

Несоответствие рабочей папки важно различать по полным путям. Если проект /Users/you/my-shop, а Claude запущен в соседнем /Users/you/other-project, index.html проекта вне этой рабочей области. При запуске из /Users/you проект вложенный и не становится недоступным только из-за домашней папки, хотя область шире нужной. Доступ к каталогу также не означает, что каждый файл уже прочитан.

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

Как проверить, из какой папки запущен Claude Code?

Краткий вывод

Спросите Claude, в какой папке он работает, или попросите выполнить команду pwd: она только выводит текущий путь и ничего не меняет. Сопоставьте этот путь с расположением проекта. Если они не совпадают, вероятно, сессия запущена не из той папки. Надёжный способ исправить это — завершить сессию, перейти в каталог проекта через терминал и запустить там claude.

Прежде чем менять настройки, проверьте, действительно ли проблема связана с рабочей папкой. Попросите Claude показать текущую директорию. Для этого он выполнит pwd — безопасную команду, которая только отображает путь.

pwd

Ответ показывает настоящую рабочую папку. Сравните с полным путём проекта: /Users/you/other-project — сосед /Users/you/my-shop, а /Users/you — родитель. В первом случае проект вне рабочего дерева; во втором он включён, но не выбран отдельным корнем.

Чтобы устранить расхождение, запустите Claude из самого каталога проекта. Завершите текущую сессию, перейдите в нужную папку через терминал и выполните команду:

# Вместо иллюстративного пути укажите настоящий корень проекта.
cd /Users/you/my-shop
claude

Теперь рабочей папкой станет my-shop, и файлы проекта окажутся в её пределах. В редакторе, например VS Code, действует тот же принцип: открывайте именно каталог проекта, а не его родительскую папку и не весь диск. Выбор открытой папки определяет рабочую область Claude.

Если перезапуск неудобен — например, в текущем разговоре уже есть важный контекст, — можно добавить другую папку или сменить рабочую область прямо во время сессии. Эти варианты рассмотрены в следующих разделах.

Как показать Claude Code файл из соседней папки?

Краткий вывод

Чтобы открыть соседнюю папку во время сессии, выполните в чате команду /add-dir и укажите её путь. Для добавления при запуске используйте флаг --add-dir вместе с командой claude. Если каталог требуется постоянно, внесите его в параметр additionalDirectories файла настроек. Во всех трёх случаях Claude получает доступ к файлам добавленной папки без отдельных подтверждений.

Иногда проект состоит из нескольких каталогов: код хранится отдельно от изображений или текстов, а общие файлы — ещё в одной папке. Вместо того чтобы каждый раз запускать Claude заново из другого места, можно оставить основной каталог рабочим и добавить к нему нужные папки.

В уже открытой сессии выполните:

/add-dir ../assets

После команды /add-dir укажите путь к каталогу. Файлы в нём станут доступны Claude наряду с содержимым основной рабочей папки. Дополнительного подтверждения для чтения этих файлов не требуется: к ним применяются те же правила доступа.

Для файлов в дополнительных каталогах действуют те же правила, что и для основной рабочей папки: Claude читает их без запроса.

— Официальная документация Claude Code: настройка разрешений

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

claude --add-dir ../assets

Для папки, которая нужна при каждом запуске, укажите её в settings.json в параметре additionalDirectories:

{
  "permissions": {
    "additionalDirectories": ["../assets", "../shared"]
  }
}

Для Windows есть ограничение: сетевой путь вида \\сервер\общая напрямую добавить нельзя. Подключите сетевую папку как отдельный диск с буквой, а затем передайте эту букву в параметре --add-dir. С обычными локальными каталогами такой проблемы нет.

Если нужно не просто добавить соседнюю папку, а целиком перейти в другую рабочую область, используйте отдельную команду, описанную ниже.

Как переключить Claude Code на другую папку прямо в сессии?

Краткий вывод

Команда /cd меняет рабочую папку, не завершая сессию: укажите её и путь к новому каталогу, чтобы продолжить разговор с прежней историей. При переходе Claude загрузит файл инструкций CLAUDE.md из новой папки и, если вы ещё не работали в ней, попросит подтвердить доверие. В отличие от /add-dir, которая лишь добавляет каталог, /cd полностью переносит рабочую область. Команда доступна начиная с версии 2.1.169.

Порой недостаточно открыть дополнительную папку: нужно перейти к другому проекту, сохранив контекст разговора. Для этого служит команда /cd:

/cd ../another-project

После её выполнения новая папка становится рабочей. История разговора сохраняется, а Claude начинает искать файлы относительно нового каталога. Если там есть CLAUDE.md, Claude также загрузит этот файл и применит инструкции проекта.

При первом переходе в папку Claude может спросить, доверяете ли вы ей. Это нужно, чтобы перед чтением инструкций из незнакомого каталога уточнить, что он вам известен. Подтвердите доверие, если папка принадлежит нужному проекту, и продолжайте работу.

Различие команд таково: /add-dir оставляет основную рабочую папку и открывает дополнительный каталог; /cd целиком переносит рабочую область. Первая команда удобна, когда файлы проекта лежат в нескольких местах, вторая — когда вы переключаетесь между проектами. /cd появилась в версии 2.1.169. Если команда недоступна, обновите Claude Code; порядок обновления разобран в отдельной статье о том, как обновить Claude Code.

Доступ к файлам — основа работы Claude Code, но результат также зависит от содержимого файлов и контекста, который вы задаёте проекту. Дополнительные материалы по настройке инструментов можно найти в документации Ailoot.

Почему Claude Code не видит файл из подпапки?

Краткий вывод

Подпапки внутри рабочей области доступны Claude, но их содержимое не обязательно загружается в контекст при запуске. Claude обнаруживает такие файлы, когда обращается к ним. Поэтому файл в глубокой подпапке может не появиться в текущем контексте, пока вы не укажете его путь или не попросите Claude прочитать его.

Важно отличать внутренние подпапки от соседних каталогов. Папка за пределами проекта по умолчанию закрыта, пока вы не предоставите доступ. Вложенные каталоги находятся внутри рабочей области, но Claude не обязательно загружает их содержимое в начале сессии.

При запуске Claude получает основные инструкции проекта. Файлы инструкций и содержимое подпапок подключаются по мере необходимости — когда Claude обращается к ним. Официальная документация описывает такой порядок для файлов инструкций; аналогичный принцип действует для контекста в целом.

Claude обнаруживает файлы во вложенных каталогах рабочей директории. Они не загружаются при запуске, а подключаются, когда Claude читает файлы в этих каталогах.

— Официальная документация Claude Code: управление памятью Claude

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

Укажите точный путь, например src/components/header.jsx, или попросите Claude сначала прочитать нужный файл. После этого Claude сможет учитывать его содержимое при дальнейшей работе. Менять настройки для этого не нужно.

Куда пропадают файлы из меню @ и при чём тут .gitignore?

Краткий вывод

По умолчанию меню выбора файлов, которое открывается через @, не показывает файлы из .gitignore. За это отвечает включённый параметр respectGitignore. Установите его в false, и такие файлы появятся в списке. Даже без изменения настройки можно указать путь к файлу вручную.

Ещё одна причина, по которой кажется, будто Claude потерял файл, связана с меню выбора. После ввода @ появляется список, позволяющий выбрать файл, но в нём отображаются не все файлы проекта.

По умолчанию меню @ скрывает файлы, перечисленные в .gitignore. Этот файл содержит правила для материалов, которые не следует добавлять в общий репозиторий: например, служебных каталогов, файлов с паролями и параметров окружения, а также собранных файлов. Поэтому нужный вам файл может существовать, но отсутствовать в меню.

Показом таких файлов управляет параметр respectGitignore. Он включён по умолчанию. Чтобы показывать также файлы, перечисленные в .gitignore, измените его значение на false:

{
  "respectGitignore": false
}

Изменить этот параметр можно и без редактирования файла: откройте в Claude Code команду /config и найдите переключатель «Respect .gitignore in file picker». Снимите отметку — скрытые ранее файлы появятся в меню.

Учтите, что respectGitignore влияет только на список файлов после нажатия @. Сам по себе этот параметр не закрывает доступ к файлам: даже если файла нет в меню, укажите его путь вручную, и Claude сможет его прочитать. Меню упрощает выбор, но не задаёт границы доступа.

Что делать, если Claude Code не может прочитать конкретный файл?

Краткий вывод

Иногда нужная рабочая папка уже открыта, но Claude отказывается читать один определённый файл. Проверьте правила deny в settings.json: ими могут быть заблокированы отдельные пути, в том числе .env с ключами и паролями. Также проверьте параметр blockReadsOutsideWorkingDirectories, который ограничивает чтение за пределами рабочей папки. Запрет на чтение .env помогает защитить секреты; не снимайте его без необходимости.

Если рабочая папка выбрана верно, но Claude всё равно не читает отдельный файл, причиной может быть правило доступа в settings.json. Есть два вида таких ограничений.

Первое — запрет для конкретных файлов. В настройках он задаётся правилами deny. Часто среди них есть .env, где могут храниться ключи и пароли:

{
  "permissions": {
    "deny": [
      "Read(./.env)",
      "Read(./.env.*)"
    ]
  }
}

Эти правила намеренно запрещают читать указанные файлы. .env защищает секреты, поэтому доступ к нему по умолчанию может быть закрыт. Если Claude не читает именно .env или другой файл с учётными данными, проверьте, что это не предусмотренное настройками ограничение, и не снимайте его без веской причины.

Второй вид ограничения распространяется на любые файлы за пределами рабочих папок. За него отвечает blockReadsOutsideWorkingDirectories. Если параметр включён, Claude откажется читать файл снаружи рабочей области, даже если вы укажете его напрямую. Чтобы открыть нужный внешний файл, добавьте его каталог через /add-dir либо отключите это ограничение:

{
  "permissions": {
    "blockReadsOutsideWorkingDirectories": false
  }
}

Параметр появился в версии 2.1.257. Если предыдущие проверки не помогли, изучите в settings.json оба ограничения: deny и blockReadsOutsideWorkingDirectories.

С чего начать, если Claude Code не видит файлы?

Краткий вывод

Сначала сравните текущую директорию Claude, которую можно узнать командой pwd, с расположением проекта. Если пути не совпадают, запустите Claude из каталога проекта или перейдите туда через /cd. Для соседних папок используйте /add-dir, а для вложенных файлов укажите путь. Если файла нет в меню @, проверьте respectGitignore; если Claude не читает один файл — посмотрите правила deny в settings.json.

Проверьте причины по порядку:

  1. Узнайте рабочую директорию Claude с помощью pwd и сравните её с расположением проекта.
  2. Если пути различаются, запустите Claude из каталога проекта: выполните cd проект, затем claude. Либо перейдите в каталог командой /cd.
  3. Чтобы открыть файлы соседней папки, добавьте её через /add-dir или используйте флаг --add-dir при запуске.
  4. Если файл из подпапки не попал в контекст, укажите его путь или попросите Claude прочитать этот файл.
  5. Если файла нет в меню @, проверьте .gitignore. Переведите respectGitignore в false или отключите соответствующий переключатель в /config.
  6. Если недоступен один конкретный файл, проверьте правила deny и параметр blockReadsOutsideWorkingDirectories в settings.json.

Чаще всего проблема устраняется уже первой проверкой: Claude был запущен из другой папки. Доступ к файлам помогает работать с проектом, а подходящий контекст позволяет Claude лучше учитывать его содержимое. Подробнее об организации контекста читайте в материале о втором мозге в Claude Code.

Официальные источники

Дополнительные материалы по работе с инструментами доступны в документации Ailoot.

Подробнее

Вопросы и ответы

Чем запуск из домашней папки отличается от соседнего проекта?

Проект внутри домашней папки — вложенный, поэтому он остаётся в более широком рабочем дереве. Сосед рабочей папки находится вне него. Сравните полные пути до вывода об отсутствии доступа.

Означает ли доступ к вложенной папке, что файлы уже в контексте?

Нет. Укажите путь и попросите прочитать файл. При отказе проверьте разрешения. Отсутствие файла в меню выбора и запрещённое чтение — разные проблемы.

Все статьи