Мой блог
Как Claude запоминает ваш компьютер: локальные идентификаторы и их сброс
Приветствую! Я регулярно использую Claude Desktop и утилиту Claude Code под Windows и в какой-то момент задался вопросом: насколько «с чистого листа» сервер воспринимает меня после выхода из учетной записи и повторного входа? Оказалось, что простой авторизации недостаточно, так как искусственный интеллект активно фиксирует характеристики самого ПК. В этом материале я подробно рассмотрю, где именно операционная система и приложение сохраняют уникальные метки, изучу внутреннюю логику их генерации на базе кода из бинарных файлов и покажу созданный мной PowerShell-скрипт для полного сброса локального слоя.
Всю детальную техническую информацию и открытый код утилиты можно найти в моем репозитории на GitHub, где выложены скрипт для очистки идентификаторов Claude Code и подробный README. Сразу отмечу важный дисклеймер: данное исследование касается исключительно того, какие файлы клиентское приложение записывает на жесткий диск вашего личного компьютера, а инструмент создан исключительно для управления персональными данными. Никакого взлома, вмешательства в чужие инфраструктуры или обхода серверных ограничений здесь не производится.
С чего всё началось и где искать основные ключи
Самый первый элемент, который привлекает внимание при изучении структуры файлов — это конфигурационный документ ~/.claude.json, расположенный в директории пользователя %USERPROFILE%. Помимо кэшей различных функций и перечня рабочих проектов, здесь прописываются два долгоживущих параметра: userID и machineID. Они представляют собой последовательности из 32 случайных байтов, представленных в шестнадцатеричном формате общей длиной в 64 символа.
Характерная особенность этих меток заключается в их полной независимости от вашего профиля или учетной записи. Под каким бы аккаунтом вы ни вошли на конкретном персональном компьютере, эта пара идентификаторов остается неизменной, связывая между собой разные сессии. Анализ скомпилированного CLI-бинарника показывает простой алгоритм: если валидный идентификатор уже присутствует в конфигурации, система применяет его, в противном случае генерирует новый уникальный ключ через криптографические модули и записывает на диск.
Рядом с этими параметрами обнаруживаются и другие интересные маркеры, например, ключ chromeExtension.pairedDeviceId, отвечающий за сопряжение с официальным браузерным расширением. Кроме того, CLI периодически создает резервные копии в папке ~/.claude\backups\, поэтому простое удаление основного файла не приведет к результату, если клиент восстановит старый machineID из свежего бэкапа.
Десктопное приложение: ant-did и скрытый реестр устройств
У официального десктопного приложения для Windows имеется собственная изолированная экосистема меток внутри каталога %APPDATA%\Claude\. Центральным элементом здесь выступает файл ant-did, в котором хранится случайный UUID в кодировке Base64. Данный идентификатор является уникальным для конкретной учетной записи операционной системы и активно передается со всеми пакетами телеметрии. Более того, точно такой же идентификатор используется и в службе отчетов об ошибках Sentry в файле session.json.
Неподалеку располагается файл ant-device-registry.json, который занимается привязкой рабочей станции к конкретным аккаунтам. В качестве ключей в нем прописаны UUID учетных записей, а в качестве значений — строки формата pk1:… с зашифрованными аппаратными ключами. На практике в этом реестре могут мирно сосуществовать несколько разных профилей, имеющих общий ключ устройства, что создает дополнительную серверную связку.
Помимо крупных файлов, система раскидывает по каталогам множество мелких солей и служебных конфигураций:
remote-control-state.jsonсодержит параметрtelemetrySaltдля генерации соли телеметрии;ccd-ids.jsonхранит дополнительную сольsalt;config.jsonфиксирует время первого запуска, последний известный UUID аккаунта и кэш OAuth-токенов;claude_desktop_config.jsonсохраняет сетевое имя хоста устройства в полеremoteToolsDeviceName.
Chromium-слой и временные каталоги
Поскольку десктопная версия Claude построена на базе платформы Electron, внутри нее функционирует полноценный профиль Chromium, о котором авторы различных инструкций по очистке часто забывают. В директории программы можно обнаружить стандартные папки веб-хранилищ, включая файлы কুকи в поддиректории Network\Cookies, где хранятся такие параметры, как ajs_anonymous_id, anthropic-device-id и сессионные идентификаторы.
В аналитическом коде десктопного клиента четко прослеживается отправка параметров вроде ajs_anonymous_id и anthropic-device-id в системы аналитики вроде GrowthBook. Примечательно, что анонимный идентификатор из десктопного приложения может совпадать с тем, что записывается в обычном веб-браузере Google Chrome при посещении сайта Claude.ai, что объединяет разные программные среды в глазах трекеров.
К числу неочевидных хранилищ также относятся временные файлы сессий в каталоге %TEMP%\claude\ и специальная папка %LOCALAPPDATA%\ClaudeDesktopRollbackBackups\. В последней после каждого апдейта сохраняются резервные копии старого файла ant-did и прочих служебных данных, из-за чего стандартное удаление папки Roaming не гарантирует полного стирания следов.
Что переживает простое удаление папки
Проведенное исследование показывает, что даже идеальная зачистка всех перечисленных конфигурационных файлов не делает вас полностью «невидимым» для серверной стороны. На идентификацию ПК влияют и другие факторы, не зависящие напрямую от локального клиента:
- системные настройки локали ОС, клавиатурные раскладки и текущий часовой пояс;
- сетевые параметры, включая ваш реальный IP-адрес, автономную систему ISP и сигнатуры TLS/HTTP2;
- серверная связка OAuth-токенов, где идентификатор аккаунта уже жестко сцеплен с аппаратным ключом на стороне облака;
- сторонние куки в стандартных браузерах вроде Chrome или Microsoft Edge, если вы открывали веб-версию сервиса.
Из этого следует закономерный вывод: локальный сброс параметров представляет собой лишь один из элементов комплексной защиты. Он полезен для того, чтобы новая сессия не наследовала старые идентификаторы вроде machineID, но ожидать магического обхода всех системных ограничений от простой чистки не стоит.
Практическая автоматизация: PowerShell-скрипт
Чтобы не выполнять рутинную и потенциально опасную работу вручную, я объединил все процедуры в универсальный PowerShell-скрипт, который совместим с любой современной версией Windows 10 или 11 без установки сторонних библиотек и без необходимости получения прав администратора.
По умолчанию утилита запускается в режиме предварительного просмотра. Сначала скрипт сканирует систему, выводит найденные маркеры на экран и ничего не удаляет до тех пор, пока вы явно не подтвердите операцию. Важным условием является сохранность пользовательских данных: диалоги Claude Code, рабочие проекты, сессии и настройки интерфейса остаются абсолютно нетронутыми в специальном защищенном блоке.
Перед началом удаления скрипт принудительно останавливает активные процессы Claude и фоновые службы, так как открытые файловые дескрипторы блокируют базы данных leveldb и файлы cookie. Кроме того, в код встроена защита от символических ссылок и точек соединения (junction), предотвращающая случайное удаление сторонних каталогов при рекурсивном обходе дерева файлов. По завершении работы утилита повторно сканирует систему и выводит актуальный статус, подтверждая успешное удаление старых меток.
Порядок запуска утилиты
Процесс подготовки и запуска утилиты максимально упрощен для рядового пользователя и состоит из нескольких элементарных шагов:
- Скачайте архив с кодом из репозитория и распакуйте его в любую удобную папку на жестком диске.
- Полностью закройте десктопное приложение Claude, убедившись в отсутствии активных фоновых процессов.
- Запустите командный файл
Reset-ClaudeIdentity.batс помощью двойного клика мыши. - В появившемся интерактивном окне консоли введите цифру 1 для подтверждения удаления или цифру 2 для отмены операции.
Специальный командный файл выполняет роль тонкой обертки, которая запускает PowerShell в обход строгих политик выполнения скриптов и удерживает окно открытым в случае возникновения непредвиденных ошибок запуска. Подобный подход делает процесс быстрым, прозрачным и полностью контролируемым.
Заключение
Анализ работы искусственного интеллекта показал, что приложение оставляет цифровые следы в самых неожиданных уголках операционной системы — от конфигурационных файлов CLI и реестра устройств до скрытых хранилищ Chromium и системных бэкапов. Разобраться в этой архитектуре оказалось весьма увлекательной задачей. Главный практический урок заключается в том, что локальный клинер возвращает систему в состояние первого запуска, однако сетевые параметры и облачные привязки аккаунтов остаются вне зоны его влияния. Если эта тема вам интересна, делитесь мнениями и подписывайтесь на обновления в наших каналах связи!
