El token era válido. Mi agente headless recibió un 401 de todos modos.

Construí dos pequeñas herramientas para llamar a Claude mediante código. Una genera mensajes de commit. La otra actualiza perfiles.

El código parecía perfecto. Obtenía una clave de API del entorno. Enviaba una solicitud HTTPS directa a la Anthropic API. Analizaba la respuesta JSON.

Fallaba siempre con un error 401.

El problema no era el código. El problema era el método de autenticación.

No utilizo una clave de API directa. Utilizo Claude Code a través de una suscripción. Esto usa OAuth a través de la Claude CLI. Este es un sistema diferente al que mi script esperaba.

Mi entorno tenía un valor desactualizado o vacío en la variable de la clave de API. El script detectaba un valor y pensaba que era válido. La solicitud se enviaba con el tipo de credencial incorrecto.

La solución fue sencilla. Dejé de hacer llamadas directas a la API. En su lugar, le dije a mi script que utilizara la CLI que ya tiene una sesión válida.

Forma antigua: Usar urllib para enviar una solicitud con una clave de API.

Forma nueva: Usar subprocess para ejecutar el comando "claude" directamente.

La CLI gestiona la sesión, los tokens y la expiración por ti.

Este error es peligroso en entornos headless. Un humano ve un error en una terminal. Un cron job o un pipeline de CI falla silenciosamente. Podrías no darte cuenta durante días.

Verás este mismo patrón en otros lugares:

  • Una herramienta busca un token de acceso personal, pero el sistema usa OIDC.
  • Un script lee claves de AWS mientras el sistema usa un rol de IAM.

El token está presente. El token tiene el formato correcto. Supera las comprobaciones básicas, pero utiliza el mecanismo equivocado.

Sigue estas reglas para evitarlo:

  • Pregunta cómo se autentica tu entorno de forma interactiva antes de escribir código. No te limites a seguir la documentación de la API.
  • No confíes en os.environ. Un valor presente podría estar desactualizado o ser incorrecto.
  • Si una herramienta CLI gestiona la autenticación por ti, úsala. Ejecuta la CLI desde el shell en lugar de reconstruir la lógica de autenticación tú mismo.
  • Si recibes un error 401, comprueba tu ruta de credenciales antes de cambiar el código de tu solicitud.

Fuente: https://dev.to/enjoy_kumawat/the-token-was-valid-my-headless-agent-401d-anyway-3bgl

Comunidad de aprendizaje opcional: https://t.me/GyaanSetuAi