In English. This project stores nothing but usage figures and limit state — never tokens, keys, or session content. If you find that a sample carries anything else, or that a measurement file leaked into a public repository, report it privately via Security → Report a vulnerability instead of opening a public issue. English reports are welcome as they are.
Только расход и состояние лимита: суммы прочитанного кэша, выданных токенов, условная стоимость, ступень светофора и время сброса.
Чего в замере не бывает никогда:
- токенов, ключей, паролей и заголовков авторизации;
- содержимого сессий — ни запросов, ни ответов;
- названий задач, имён файлов, путей и веток;
- чего угодно ещё, что не прошло по белому списку полей.
Список белый, а не чёрный, намеренно: чёрный не переживёт добавления нового поля в реестр сессий. Незнакомое поле обязано не попасть в замер по умолчанию.
Держит это src/claude_code_usage/whitelist.py, и граница внутри него проходит
не там, где кажется:
- незнакомое поле вне
usage— метаданные сессии: отбрасывается молча, попасть в замер оно и не должно; - незнакомое поле внутри
usage— отказ, замер не пишется. Это, скорее всего, новое слагаемое расхода, и записать замер без него значит занизить сумму на неизвестную долю: шкала окажется неверной, а проверить это по самим данным будет нечем — источник тот же усечённый файл.
Цена отказа названа честно: новое поле в реестре остановит замеры до правки списка. Это дешевле, чем граница в накопленных данных, до которой расход учтён не полностью, — её уже не починить.
В приватный репозиторий, путь к которому задаётся конфигом и указывает на ваше собственное хранилище. Никуда больше: у проекта нет сервера, телеметрии и агрегации чужих замеров, и по инварианту не появится.
Из этого следует граница ответственности: приватность хранилища — на вашей стороне. Инструмент пишет туда, куда его направили. Направленный в публичный репозиторий, он честно опубликует картину вашей активности по часам.
Замер выглядит безобидно: несколько чисел и слово allowed_warning. Ряд таких
строк за месяц — это распорядок дня, интенсивность работы и её условная
стоимость.
Поэтому: не присылайте файлы замеров в pull request, даже обезличенные. Это не тестовые данные, а чужая история работы. Тесты работают на подделанных строках, и этого достаточно.
Приватно — Security → Report a vulnerability в этом репозитории. Если
приватные отчёты недоступны, заведите issue с меткой question и без
подробностей, а детали передайте по запросу.
Публичный issue с описанием утечки увеличивает утечку.
Сообщать стоит о:
- поле в замере, которого нет в белом списке;
- секрете, попавшем в репозиторий, в пример из документации или в тест;
- файле замеров, оказавшемся в публичном репозитории;
- способе заставить инструмент записать в хранилище содержимое сессии.
Ответ приходит на тот же канал. Проект ведётся одним человеком с помощью агентских окон — сроков реакции здесь не обещают, и обещание было бы неправдой.
Порядок именно такой, и первый шаг не «удалить файл»:
- Отозвать секрет. Ключ, попавший в git, считается скомпрометированным независимо от того, публичный репозиторий или приватный. Отзыв — то, что действует; удаление — то, что успокаивает.
- Убрать из истории. Обычный коммит с удалением не помогает: git помнит. Нужна переписанная история либо новый репозиторий.
- Проверить, что породило утечку. Если секрет пришёл из замера — правится белый список и добавляется тест, падающий на этом поле. Инцидент без теста повторится.
Порядок продиктован тем, что первый шаг обратим по последствиям, а второй — по времени: пока ключ действует, скорость важнее чистоты истории.
Инструмент не обращается к API Anthropic, не запрашивает лимиты и не имеет к ним доступа: остаток он измеряет по фактическому расходу и переключениям светофора. Отсутствие такого доступа — не ограничение реализации, а причина существования проекта.