Claude Code manda más de lo que usás. Así lo recortás
En cada mensaje, Claude Code envía definiciones de herramientas, skills e instrucciones de funciones que quizás nunca tocás. Con un par de ajustes en settings.json podés sacar lo que sobra y ganar contexto en cada turno.
Kevin Defalco5 min de lectura
Uso Claude Code todos los días, y hasta hace poco nunca me había preguntado qué viaja realmente cuando le mando un mensaje. Spoiler: mi mensaje es lo de menos. Antes van las instrucciones del sistema, la definición de cada herramienta que tiene disponible y un catálogo de skills. Y eso se manda de nuevo en cada turno, aunque yo nunca use la mitad de esas herramientas.
Me puse a investigar después de leer un artículo de Matt Pocock sobre el tema.1 Probé sus pasos, los fui chequeando contra la documentación oficial (algunas cosas ya cambiaron) y esto es lo que me quedó.
¿Cuánto cuesta en realidad?
Menos de lo que pensaba, la verdad. Claude Code usa prompt caching: como el principio de cada request es igual al anterior, la API no lo vuelve a procesar, lo lee de una caché.2 Y leer de la caché es barato: un 10% del precio normal en la mayoría de los modelos, y un 5% en Opus 5.5 y Sonnet 5.5.3
Entonces, ¿vale la pena tocar algo? Yo creo que sí. Todo eso ocupa lugar en la ventana de contexto, lugar que podría usar para código. El modelo lo tiene que leer antes de llegar a lo que le pedí. La caché se vence si me voy un rato, si cambio de modelo o si se actualiza Claude Code, y ahí se paga todo completo otra vez, con un recargo encima.2 Y como uso suscripción, todo eso cuenta contra mis límites de uso.
1. Mirá cuánto ocupa con /context
El primer paso es medir. Escribí /context en cualquier sesión y vas a ver cómo se reparte el contexto: system prompt, herramientas del sistema, herramientas de MCP, archivos de memoria, mensajes. Cada cosa con sus tokens.
Anotá los números antes de cambiar nada, así después comparás.
Lo malo es que todas las herramientas aparecen sumadas en una sola línea, así que no sabés cuál es la que más pesa.
2. Si querés el detalle, usá un proxy
Para eso Pocock armó un proxy chiquito en Node.4 Se pone en el medio entre Claude Code y la API, reenvía todo tal cual, guarda cada request en un archivo Markdown y te muestra un ranking de herramientas por tamaño. Lo levantás así:
node proxy.mjsY en otra terminal abrís Claude Code apuntando a él:
ANTHROPIC_BASE_URL=http://localhost:8787 claudeSi estás en Windows con PowerShell, es $env:ANTHROPIC_BASE_URL="http://localhost:8787"; claude.
Un par de cosas que tuve en cuenta. Primero, leé el código antes de correrlo: un proxy así ve todo lo que mandás, incluido tu token. Por suerte es un solo archivo sin dependencias y se lee en cinco minutos. Segundo, los números que te da van a ser más altos de lo normal. Cuando usás un ANTHROPIC_BASE_URL propio, Claude Code desactiva tool search y carga todas las herramientas de una.2 En una sesión normal, las de MCP quedan en espera y solo se carga el esquema cuando hacen falta. Así que yo lo usé para saber qué pesa, no para calcular cuánto gasto.
3. Apagá lo que no usás
Hay funciones que vienen con todo un paquete de herramientas e instrucciones, y se apagan con una sola línea. Todo esto va en ~/.claude/settings.json si lo querés para todos tus proyectos, o en .claude/settings.json si es para uno solo.
Las que apagué yo:
disableWorkflows: saca los workflows dinámicos, o sea la herramientaWorkflow,/workflows,/deep-researchy el modo ultracode. Se puede apagar también desde/config.5disableBundledSkills: saca las skills que trae Claude Code de fábrica./doctorsigue funcionando.6disableRemoteControl: apaga Remote Control.disableClaudeAiConnectors: hace que no se traiga los conectores de mi cuenta de claude.ai."enableArtifact": false: apaga la herramienta Artifact. En el artículo original aparece comodisableArtifact, pero esa opción ya figura como obsoleta.7
4. Sacá herramientas de a una
Para herramientas sueltas está permissions.deny. Si ponés solo el nombre de la herramienta, Claude Code la saca del contexto y el modelo directamente no sabe que existe.8
{
"permissions": {
"deny": ["NotebookEdit", "CronCreate"]
}
}Acá hay un detalle que me costó entender al principio. Poner "NotebookEdit" elimina la herramienta. Pero si escribís una regla más específica, como "Bash(rm *)", la herramienta sigue estando y solo se bloquean esas llamadas. Para achicar el request, tiene que ser el nombre solo.
Con las skills pasa algo parecido. disableBundledSkills las apaga todas, pero si querés quedarte con algunas podés usar skillOverrides y elegir para cada una qué ve Claude:6 todo ("on"), solo el nombre ("name-only"), nada pero vos la podés seguir llamando con / ("user-invocable-only"), o directamente nada ("off"). No hace falta escribirlo a mano: desde el menú /skills se configura solo, y /skill-doctor te dice cuánto ocupa cada una y cuánto la usás.
5. Mi configuración
Así quedó mi ~/.claude/settings.json:
{
"permissions": {
"deny": [
"EnterPlanMode",
"ExitPlanMode",
"NotebookEdit",
"CronCreate",
"CronDelete",
"CronList",
"RemoteTrigger",
"PushNotification",
"ScheduleWakeup"
]
},
"disableBundledSkills": true,
"disableWorkflows": true,
"disableRemoteControl": true,
"disableClaudeAiConnectors": true,
"enableArtifact": false
}No la copies tal cual sin pensarla un poco. Saqué el plan mode (EnterPlanMode y ExitPlanMode) porque yo no lo uso: prefiero ir charlando el plan en la conversación. Si a vos te sirve, dejalo. Lo mismo con NotebookEdit: no trabajo con notebooks, pero si usás Jupyter lo vas a necesitar.
AskUserQuestion lo dejé, aunque Pocock también lo saca, porque me gusta que Claude me pregunte cuando hay algo que decidir. Y no toqué las herramientas de tareas ni las de worktrees, que son las que usan los trabajos en segundo plano y los multiagente.
Un último consejo: hacé estos cambios entre sesiones y no en el medio, porque agregar o quitar reglas mientras trabajás puede invalidar la caché.2
6. Volvé a medir
Cerrá Claude Code, abrilo de nuevo para que lea la configuración y corré /context otra vez. Las herramientas y el total deberían haber bajado.
Esa diferencia es lo que dejás de mandar en cada mensaje. Más espacio para tu código y menos cosas que el modelo tiene que leer antes de llegar a lo que le pediste.
Fuentes
-
Matt Pocock, AI Hero — How To Kill The Bloat In Claude Code’s System Prompt. ↩
-
Documentación de Claude Code — How Claude Code uses prompt caching. ↩ ↩2 ↩3 ↩4
-
Documentación de la API de Claude — Prompt caching. ↩
-
Documentación de Claude Code — Dynamic workflows. ↩
-
Documentación de Claude Code — Settings reference. ↩
-
Documentación de Claude Code — Configure permissions. ↩