Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add instructions/thalesholleben/ccx/agents-mdgit clone --depth 1 https://github.com/thalesholleben/ccxWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/instructions/thalesholleben/ccx/agents-md)<a href="https://agentmods.dev/instructions/thalesholleben/ccx/agents-md"><img src="https://agentmods.dev/badge/instructions/thalesholleben/ccx/agents-md.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.01558 | $0.01558 |
| Opus 5 | $0.00779 | $0.00779 |
| Sonnet 5 | $0.00312 | $0.00312 |
| Haiku 4.5 | $0.00156 | $0.00156 |
Grade A, and why
ccx AGENTS.md scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 102 lines — stays where its author put it; the contents beside it link to each section on GitHub.
AGENTS.md
Mapa rapido para quem (humano ou agente) for mexer neste repositorio.
O que e
Dois scripts Python stdlib independentes, cada um monitorando a cota de um provedor e trocando de conta antes de bater o limite:
ccx.py- contas Claude Code (le~/.claude/.credentials.jsone~/.claude.json)ccx_codex.py- contas Codex CLI / ChatGPT (le~/.codex/auth.json), importaccx.pye reusa de la a engine de decisao e os primitivos de IO/lock
Sem framework, sem dependencia externa, sem servidor. So leitura de cota e troca cirurgica de credencial nos arquivos que o proprio Claude Code / Codex CLI ja usam.
Comandos de validacao
python test_ccx.py # 42 testes, engine de decisao + IO do modulo Claude
python test_ccx_codex.py # 30 testes, especifico do modulo Codex
python test_ccx_profile.py # launcher opt-in de perfis isolados
Sem framework de teste, so assert e um runner minimo no final de cada
arquivo. Rodar os três antes de qualquer PR.
Regras ao editar
- Qualquer troca de credencial tem que continuar cirurgica: reescrever so
os campos que identificam a conta, nunca o arquivo inteiro. O
.credentials.jsondo Claude Code guardamcpOAuth(tokens de servidores MCP) que uma escrita completa derrubaria. - Identidade de conta ativa casa por email/organizacao, nunca por token. Os dois provedores rotacionam o refresh token da conta em uso; comparar por token faz a identidade se perder na primeira rotacao.
- Toda escrita em disco e via arquivo temporario +
os.replace(atomica). JSON corrompido levantaCorruptFile, nunca vira{}silenciosamente (um{}faria o passo seguinte reescrever o arquivo e apagar o que nao foi lido). ccx_codex.pyimportaccx.pypara reusar a engine de decisao (pick_target,band_delay,next_wake) e os primitivos de lock/IO. Nao duplicar essas funcoes; se algo generico precisar mudar, muda emccx.pye o modulo Codex herda.status,hookeautocompartilhamusage_cache. Qualquer coleta deve adquirir o lock e reler o store antes de decidir o que consultar: processos concorrentes podem ter preenchido o cache enquanto este processo esperava.HTTP 429na leitura de uso e falha de medicao, nao prova de cota esgotada. Sem leitura conhecida, manter a ativa. Se uma leitura recente ja a confirmou esgotada, ela pode orientar a troca mesmo que a releitura tenha dado 429.do_switchdeve reler o store depois de adquirir o lock. A coleta solta o lock antes da decisao, e gravar o snapshot antigo pode ressuscitar refresh token ou apagar cache que outro hook acabou de salvar.- Limiar e cooldown sao calibrados juntos. A folga que o limiar compra,
(100 - threshold) / burn_rate, tem que ser folgadamente maior quecooldown + maior POLL_TIGHT, senao o cooldown sobrevive a folga e o monitor fica preso numa conta que morreu dentro da trava. Mexer em um sem olhar o outro recria o travamento de 19/08/2026. - O escape de cooldown (
cooldown_blocks) dispara em util >= 100, nao no limiar. Escapar no limiar equivale a remover o cooldown, porque um alvo diferente da ativa ja implica que a ativa esta pior. Cota ilegivel nunca escapa. - O predicado de cooldown mora em
ccx.pye os doischeck_onceo chamam. Nao duplicar: era copia colada nos dois modulos e so um dos lados seria corrigido. - Faixas de poll sao por provedor (
ccx.PollBands). O modulo Codex passa as suas emBANDSporque la o rotulo "5h" e posicional e costuma carregar a janela semanal, que nao se move dentro de uma sessao; herdar a faixa apertada do Claude prenderia o poll no ritmo rapido por dias. - Toda troca registra o snapshot da decisao no
auto.logvia oreasondodo_switch. Percentual e numero de slot podem entrar; token, e-mail e payload nao. pinned_slote uma trava de operador, nao uma preferencia. Quando existe,check_oncesai antes de qualquer coleta: fixar uma conta nao pode gerar trafego de usage. E odo_switch(..., only_if_pinned=True)revalida a fixacao ja sob o lock, senao um--pin offconcorrente seria desfeito por uma troca decidida antes dele.pinned_slotinvalido (slot inexistente ou tipo errado) levanta erro em vez de virarNone. Cair em rotacao silenciosa e pior do que parar: o operador fixou justamente para a conta nao mudar.- Locks internos do CCX guardam PID, id e marca de criação do processo. PID vivo
com marca divergente é reciclado e pode ser retomado; marca temporariamente
ilegível ou lock legado sem marca conserva o lock enquanto o PID estiver vivo.
discard_lock(..., None)só pode remover um diretório ainda vazio: nunca apagueowner.jsonsem conferir a identidade do dono. - Falha antes do loop de
ccx.py autosó vai paraauto.logcomo classe da exceção ou como configuração insuficiente; nunca registrestr(exc), token ou payload. - A troca do arquivo global de autenticacao serve para uso sequencial. Um
processo persistente do Codex pode manter a identidade em memoria e nao
migrar de conta. Nao documentar esse hot-swap como isolamento seguro entre
agentes paralelos; isso exige perfis por processo (
CODEX_HOME/CLAUDE_CONFIG_DIR) ou um proxy com afinidade de sessao. ccx_profile.pye o caminho opt-in para paralelismo: não copie tokens nem mude o ambiente do processo pai. Ele só cria o diretório do perfil e inicia um processo filho comCLAUDE_CONFIG_DIRouCODEX_HOMEpróprio. Para Codex, preserve a flagcli_auth_credentials_store="file"antes dos args.- Nunca commitar
~/.ccx/accounts.jsonou~/.ccx/codex_accounts.json(tokens OAuth reais). Ja estao no.gitignore.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 4d ago First seen · 102 lines · 1,558 tokens per session scan A 0885909629c9
ccx AGENTS.md is an instructions file published in the GitHub repository thalesholleben/ccx (9 stars, last pushed 14d ago), licensed MIT. It adds 1,558 tokens to every session, about $0.0078 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other instructions, from other repositories
apm python.instructions.md
Python development guidelines.
CodexPotter AGENTS.md
AGENTS.md instructions for breezewish/CodexPotter, covering repository guidelines, workflow principles, engineering rules, core principles: simplicity & readability and better maintainability.
OpenMicro AGENTS.md
Instructions for stephenleo/OpenMicro, covering openmicro — project conventions and releases.
squarebox CLAUDE.md
Instructions for SquareWaveSystems/squarebox, covering claude.md, agent skills, issue tracker, triage labels and domain docs.
codmate AGENTS.md
Instructions for loocor/codmate, a project described as: CodMate is a macOS SwiftUI app for managing CLI AI sessions: browse, search, organize, resume, and review work produced by Codex, Claude Code, and Gemini CLI. It focuses on speed, a compact three-column UI, and “ship it” workflows like Project Review (Git…
CodexBar AGENTS.md
AGENTS.md instructions for bob-zebedy/CodexBar, covering repository guidelines, 项目结构与模块组织, 构建、测试与开发命令, 写作风格 and 代码和注释.