1 puntos por GN⁺ 3 시간 전 | 1 comentarios | Compartir por WhatsApp
  • Claude Code 2.1.198 activó por defecto una función de continuación automática que seguía con la tarea según el criterio del modelo si no había respuesta a AskUserQuestion durante 60 segundos, pero no lo registró en el changelog ni en la documentación al momento del lanzamiento
  • No aprobaba automáticamente las solicitudes de permisos, pero en entornos con herramientas ya permitidas o con --dangerously-skip-permissions podía pasar por compuertas de decisión como “staging o production”, y con solo algunas respuestas ingresadas el modelo elegía el resto
  • 2.1.200, lanzado unos dos días después de que se señalara el problema, no eliminó la función sino que solo la desactivó por defecto, cambiándola a un esquema opt-in en /config donde se puede elegir entre 60s, 5m, 10m o never
  • En el repositorio público no están el código real del producto ni los commits de introducción o reversión, pero al comparar los bundles de JavaScript incluidos en el ejecutable de Bun de npm se puede confirmar que en 2.1.198 se agregaron juntos las cadenas AFK, el esquema y los eventos de analítica
  • Si se combinan actualizaciones automáticas por defecto y un registro de cambios incompleto, las suposiciones de seguridad pueden cambiar sin intervención del usuario. Para fijar la versión del CLI mientras se actualizan los plugins, hay que configurar juntos DISABLE_AUTOUPDATER=1 y FORCE_AUTOUPDATE_PLUGINS=1

2.1.198 decidió por la persona tras 60 segundos

  • Claude Code 2.1.198, lanzado el 1 de julio de 2026, dejaba de bloquearse cuando AskUserQuestion llevaba 60 segundos esperando una respuesta humana, e instruía al modelo a seguir adelante tomando la mejor decisión posible con base en el contexto
    • En la salida aparecía No response after 60s — continued without an answer
    • También indicaba que se podía volver a preguntar, pero a la nueva pregunta se le aplicaba el mismo timeout
  • Si el usuario respondía solo algunas preguntas y luego se ausentaba, no descartaba la entrada sino que enviaba una respuesta parcial
    • Si respondía solo la primera de tres preguntas, seguía con esa respuesta y las restantes elegidas por el modelo
    • El mensaje en pantalla elegía entre continued with the answers selected so far o continued without an answer según hubiera o no respuestas
  • No es que no hubiera nada de cuenta regresiva en pantalla
    • Al presionar una tecla, el temporizador se reiniciaba y aparecía un mensaje como auto-continue in 12s · any key to stay
    • Pero como el valor por defecto de CLAUDE_AFK_COUNTDOWN_MS era 20 segundos, durante los primeros 40 segundos parecía una pregunta bloqueante normal, y la advertencia solo se mostraba en los últimos 20 segundos
    • Los usuarios que ejecutaban varios agentes en pestañas distintas o que se ausentaban podían no ver la advertencia

Alcance y límites de las compuertas de seguridad

  • El timeout solo se aplicaba a AskUserQuestion y no estaba conectado a prompts de permisos como la aprobación de un plan o Do you want to allow …
    • En el ejecutable, el componente de cuenta regresiva y el hook del temporizador solo estaban conectados al cuadro de diálogo de preguntas
    • La referencia de herramientas también especifica que los prompts de permisos no se resuelven automáticamente por inactividad
  • En los modos de ejecución donde el prompt de permisos ni siquiera aparecía, esta separación no servía como protección
    • Se podían usar bypassPermissions, acceptEdits, allowedTools, --dangerously-skip-permissions y el hook PreToolUse
    • Si un comando de despliegue estaba en la lista de permitidos o se omitía la verificación de permisos, opciones de AskUserQuestion como “¿staging o production?” o “¿qué config?” podían ser la única compuerta restante
  • El temporizador no otorgaba permisos, pero sí podía dejar la elección al modelo en tareas para las que ya había permisos
  • El esquema de la herramienta no tenía una entrada timeout, y el modelo tampoco podía configurarla ni controlarla
    • Los parámetros de entrada eran solo questions, answers, annotations y metadata
    • Quien omitía la respuesta no era el modelo, sino el harness del agente que devolvía una respuesta automática

Línea de tiempo del lanzamiento y la reversión

  • El registro público confirmado sigue esta secuencia
    • 2026-06-29: lanzamiento de 2.1.196, la última versión normal estimada por quien reportó el problema
    • 2026-06-30: lanzamiento de 2.1.197; el changelog solo incluía una línea sobre el lanzamiento de Sonnet 5
    • 2026-07-01: lanzamiento de 2.1.198 con la continuación automática
    • 2026-07-02 02:54 UTC: Aleksey Nogin publica el issue #73125
    • 2026-07-02 03:45 UTC: en los comentarios comparte CLAUDE_AFK_TIMEOUT_MS, una vía de escape no pública
    • 2026-07-02: con el issue aún abierto, se lanza 2.1.199 con 24 elementos; la continuación automática seguía sin figurar
    • 2026-07-03: en 2.1.200 se revierte el comportamiento por defecto
    • 2026-07-04 18:04 UTC: se cierra el issue
  • El issue recibió 384 👍 y 143 comentarios, y el entorno reportado era 2.1.198, Opus, AWS Bedrock y la terminal de VS Code
  • Desde el reporte del problema hasta el cambio del valor por defecto pasaron unos dos días

Cómo lo corrigió 2.1.200

  • 2.1.200 no eliminó la función, sino que dejó la continuación automática desactivada por defecto y la convirtió en una opción opt-in mediante /config
  • Antes de la corrección, 2.1.198 no tenía la configuración /config askUserQuestionTimeout, y para evitar el efecto había que usar variables de entorno no mencionadas en la documentación de lanzamiento
  • Incluso en 2.1.211 se mantiene la implementación completa
    • El nombre del ajuste en /config es Question auto-continue timeout
    • Los valores permitidos son 60s, 5m, 10m y never
    • Si no se configura, se trata como never y la función queda desactivada
    • El timeout interno por defecto sigue siendo 60,000ms y la referencia para la cuenta regresiva sigue siendo 20,000ms
    • CLAUDE_AFK_TIMEOUT_MS y CLAUDE_AFK_COUNTDOWN_MS pueden sobrescribir la configuración
  • La corrección no eliminó el temporizador, sino que agregó una condición de compuerta para activarlo solo cuando existe una configuración o variable de entorno
  • Los usuarios fijados a versiones afectadas podían esquivarlo temporalmente poniendo un valor muy grande en CLAUDE_AFK_TIMEOUT_MS dentro de settings.json

Introducción de una función ausente en el registro de cambios

  • Las notas de la versión se publican con el mismo contenido en el registro de cambios oficial y en CHANGELOG.md del repositorio
  • Si se revisan los registros de ese momento con base en commits fijados, la incorporación del autoavance no aparece en ninguna versión
    • 2.1.197: una línea sobre el lanzamiento de Sonnet 5
    • 2.1.198: hay unos 30 puntos, pero no aparece el autoavance
    • 2.1.199: tampoco aparece entre los 24 puntos publicados después de que se abrió el issue
  • AskUserQuestion era una herramienta que normalmente sí se registraba en el changelog, al punto de aparecer 15 veces en total a lo largo de 13 versiones desde 2.0.55
    • Pero no aparece ni una sola vez entre 2.1.181, donde entró el cambio, y antes de 2.1.200
    • De los dos cambios de comportamiento, activación y desactivación, solo quedó registrada la desactivación
  • El único punto que registró por primera vez el autoavance fue la frase en 2.1.200 que dice que “ya no avanza automáticamente por defecto y ahora es opt-in mediante /config
  • CLAUDE_AFK_TIMEOUT_MS no aparecía ni en el changelog ni en el README

Documentación añadida después de revertir el comportamiento

  • La actual referencia de variables de entorno documenta las dos variables de entorno AFK y afirma explícitamente que en 2.1.198 y 2.1.199 el autoavance de 60 segundos estaba activado por defecto
  • Este documento no puede ser una copia del estado del día del lanzamiento
    • askUserQuestionTimeout, que menciona el texto actual, no existe en el ejecutable de 2.1.198
    • En las capturas de Wayback Machine del 23 de junio y del 1 de julio a las 12:11 y 21:35 UTC, CLAUDE_AFK y AskUserQuestion aparecían 0 veces respectivamente
    • Como punto de comparación, DISABLE_AUTOUPDATER sí aparece 2 veces en todas las capturas, así que no fue una omisión causada por un fallo al capturar la página
  • 2.1.198 se publicó en npm el 1 de julio a las 16:50:16 UTC, pero incluso 4 horas y 45 minutos después la documentación seguía sin mencionar AFK, autoavance, la herramienta de preguntas ni la cuenta regresiva
  • El texto relacionado se añadió en algún momento entre el 1 de julio a las 21:35 y el 5 de julio a las 13:58, un intervalo que también incluye la reversión en 2.1.200
  • La nueva documentación solo reflejó el estado posterior al arreglo, cuando ya estaba “desactivado por defecto”, así que nunca hubo un momento en que el comportamiento real por defecto del 1 y 2 de julio quedara documentado

Código fuente y commits del producto ausentes del repositorio público

  • No existe ni un commit público que introduzca la función ni otro que la revierta
  • En el historial público de Git solo quedan dos commits automáticos que actualizaron el changelog y feed.xml
    • 75709ea: publicación de las notas de la versión 2.1.198
    • 1322e9b: publicación de las notas de la versión 2.1.200
  • El repositorio anthropics/claude-code tiene 216 archivos rastreados y 104 de ellos son Markdown; no contiene el código fuente real del producto distribuido
    • Los archivos ejecutables son ejemplos o scripts de automatización para seguimiento de issues
    • plugins/ y examples/ también contienen plugins de muestra, configuración de Terraform para un gateway de GCP, perfiles MDM y otros recursos similares
  • La diferencia entre los tags 2.1.197 y 2.1.198 es solo CHANGELOG.md y feed.xml, que lo repite en RSS
    • Lo mismo ocurre en diez versiones consecutivas, desde 2.1.196 hasta 2.1.206, donde solo cambiaron esos dos archivos
    • Los tags no son tags de código fuente, sino en la práctica tags de notas de versión
  • Ni el changelog ni las comparaciones de repositorio o tags permiten verificar el comportamiento real distribuido; el código fuente con el que fue escrito no se publicó y la distribución se hizo solo como ejecutables compilados

Huellas de un diseño e instrumentación deliberados

  • No hay documentos oficiales de diseño, PR ni texto en el changelog que permitan confirmar por qué se introdujo
  • El nombre y los mensajes son evidencia circunstancial de que apuntaba a una situación donde agentes en paralelo quedaban bloqueados indefinidamente porque alguien se había alejado
    • El nombre interno AFK significa away from keyboard
    • El mensaje asume que “el usuario podría estar lejos del teclado”
    • Participantes del issue dijeron que usan flujos de trabajo donde decenas de agentes esperan durante días la respuesta de una persona
  • En 2.1.198 se añadió al esquema de resultados de la herramienta el campo afkTimeoutMs, que indica si hubo resolución automática
    • No aparece en la ruta donde responde una persona y, en caso de resolución automática, registra el tiempo de inactividad
    • Se usa para informarle al modelo que fue una respuesta resuelta automáticamente y para elegir el componente de salida en terminal
  • En esa misma versión también se añadió el evento analítico tengu_ask_user_question_afk_auto_advance
    • Envía timeoutMs, el número de preguntas, si estaba en modo plan y si había respuestas parciales
    • No envía el texto original de la pregunta; usa source_hash y contadores
  • Dado que hadPartialAnswers se instrumentó por separado, la ruta de respuestas parciales también tenía código independiente y medición propia
  • Como el comportamiento, la UI de cuenta regresiva, el campo del esquema y el evento analítico entraron juntos en una sola versión, no fue una línea accidental sino una función con un sistema de medición incorporado
  • Solo con esta evidencia no se puede saber quién la escribió, revisó, aprobó o integró, ni en qué etapa intervino una persona

Es código cerrado, pero el ejecutable de Bun se puede leer

  • Claude Code instalado es un ejecutable nativo de unos 250 MB sin símbolos eliminados
  • El formato de ejecutable único de Bun adjunta el grafo de módulos detrás del runtime, y en el ejecutable de Claude Code también puede encontrarse la marca ---- Bun! ----
  • Como Bun incluye el bundle de JavaScript dentro del ejecutable, con strings se pueden leer nombres de configuración, mensajes, eventos analíticos y otros elementos
  • El directorio de instalación local conserva solo algunas versiones recientes, pero en npm permanecen los ejecutables por plataforma de cada versión
    • @anthropic-ai/claude-code es un stub de instalación de unos 152 KB
    • El paquete real de 2.1.198 para Linux x64 pesa unos 249 MB
  • No hay código fuente público, pero como se pueden descargar los artefactos de cada lanzamiento y verificar el comportamiento distribuido, no es una caja negra completa

Comparación de los ejecutables 2.1.197 y 2.1.198

  • Al buscar cadenas relacionadas con AFK en ambos ejecutables, el límite es claro
    • 2.1.197: away from keyboard, CLAUDE_AFK_TIMEOUT_MS y CLAUDE_AFK_COUNTDOWN_MS aparecen 0 veces
    • 2.1.198: aparecen 2, 3 y 3 veces, respectivamente
  • Tras la corrección, en la compuerta del temporizador de 2.1.211 se añadió la condición de que debe existir un valor de /config o una variable de entorno
    • En 2.1.198 ya había una compuerta que revisaba, entre otras cosas, si había ejecuciones externas en competencia
    • Pero no había ninguna condición que el usuario pudiera desactivar, y la corrección fue básicamente añadir una condición && más ahí
  • Sin conocer el nombre de la función ni la versión en la que ocurrió el problema, comparar un release cualquiera es mucho más difícil
    • En una comparación simple basada en strings -n 8, cambian 21,903 cadenas
    • Según la longitud mínima de cadena, el número puede ser 81,289 o 29,910, así que 21,903 no es una característica fija del release
    • En cada build, el minifier cambia nombres de identificadores, así que la mayoría es ruido y no cambios reales de funcionalidad
  • Si se filtran solo las cadenas añadidas que empiezan con mayúscula, tienen forma de oración normal en inglés y cinco palabras o más, se reduce a 156 líneas
    • Entre ellas está Before going idle the user had selected:
    • Como es una cadena que se inserta en la conversación cuando el cuadro de diálogo responde en lugar de la persona, era un cambio suficiente para detener la revisión incluso sin información previa
  • Se podía encontrar en unos 5 minutos con curl, strings y diff, pero pretender que los usuarios inspeccionen ejecutables en cada release con actualización automática no puede sustituir un changelog

Un problema de seguridad mayor que el costo

  • Si se elige automáticamente una ruta equivocada, se pueden consumir tokens innecesarios
  • El problema más serio es que hooks y reglas que asumían AskUserQuestion como una compuerta de seguridad bloqueante pasan a un conteo regresivo de 60 segundos
  • Claude Code se usa incluso en entornos riesgosos como despliegues, infraestructura y scripts cercanos a producción
  • Como Claude Code se actualiza automáticamente por defecto, combinado con cambios silenciosos de comportamiento, las suposiciones de seguridad existentes pueden cambiar sin que el usuario haga nada
  • La discusión sobre si la política misma de recibir de inmediato la última versión puede ser una decisión riesgosa se conecta con On Cooldowns and Dependabot Tuning

Cómo desactivar las actualizaciones automáticas y su prioridad

  • Para saber si se desactivan las actualizaciones, se revisan las siguientes variables de entorno en orden y se aplica la primera coincidencia
    • DISABLE_UPDATES=1: bloquea todas las rutas de actualización, incluyendo claude update manual
    • DISABLE_AUTOUPDATER=1: solo detiene la verificación en segundo plano y permite actualizaciones manuales; tiene prioridad sobre la configuración autoUpdates
    • CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1: detiene a la vez actualizaciones automáticas, el comando de feedback, el reporte de errores y la telemetría
  • Si se pone en el bloque env de ~/.claude/settings.json en lugar del perfil del shell, puede aplicarse a todas las sesiones, incluyendo CI, cron, systemd y terminales del IDE
{
  "env": {
    "DISABLE_AUTOUPDATER": "1"
  }
}
  • El alcance de la configuración se vuelve más fuerte en este orden: perfil del shell, ~/.claude/settings.json por usuario, .claude/settings.json por repositorio y managed-settings.json para administración central
  • La ruta de managed-settings.json es la siguiente
    • macOS: /Library/Application Support/ClaudeCode/managed-settings.json
    • Linux/WSL: /etc/claude-code/managed-settings.json
    • Windows: C:\Program Files\ClaudeCode\managed-settings.json
    • La ruta anterior C:\ProgramData\ClaudeCode ya no se lee
  • No existe un flag de CLI para desactivar las actualizaciones automáticas, y /doctor muestra el tipo de instalación y el canal de actualizaciones

Si desactivas la actualización del CLI, también se detienen los plugins

  • Si se desactiva el auto-updater de cualquier forma, ya sea con una variable de entorno o con autoUpdates: false, también se detienen las actualizaciones automáticas de plugins
  • La documentación para explorar plugins indica que, si se configura FORCE_AUTOUPDATE_PLUGINS=1 junto con DISABLE_AUTOUPDATER, se puede fijar el CLI y seguir actualizando los plugins
  • En cambio, la documentación real para desactivar actualizaciones automáticas en /setup y la tabla de variables de entorno de configuración no mencionan el impacto en plugins ni FORCE_AUTOUPDATE_PLUGINS
  • En el ejecutable, hay cuatro rutas que hacen que se detengan las actualizaciones de plugins
    • DISABLE_UPDATES
    • DISABLE_AUTOUPDATER
    • CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC
    • autoUpdates: false
  • Durante la ejecución no aparece una advertencia de que los plugins se detuvieron; solo queda el log de depuración Plugin autoupdate: skipped (auto-updater disabled)
  • La configuración para fijar el CLI y mantener los plugins es la siguiente
{
  "env": {
    "DISABLE_AUTOUPDATER": "1",
    "FORCE_AUTOUPDATE_PLUGINS": "1"
  }
}
  • FORCE_AUTOUPDATE_PLUGINS, DISABLE_AUTOUPDATER y DISABLE_UPDATES interpretan 1, true, yes y on como verdadero sin distinguir mayúsculas y minúsculas, y 0 como falso
  • CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC no revisa el valor sino solo su existencia, así que también se activa con =0; en ese caso se detienen tanto el auto-updater como las actualizaciones de plugins

Otras trampas en la configuración de actualizaciones

  • Aunque se use CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC por privacidad o para limitar comunicaciones externas, el CLI y los plugins quedan fijados juntos
  • autoUpdates: false, que no aparece en la documentación, puede ser ignorado si autoUpdatesProtectedForNative está activo en una instalación nativa
    • Las variables de entorno se revisan antes que esa configuración y se aplican sin condiciones
  • 2.1.98 corrigió un problema en instalaciones con npm donde DISABLE_AUTOUPDATER no impedía por completo la verificación de versión en el registro ni la modificación de enlaces simbólicos
  • También se corrigió el problema de que el auto-updater sobrescribiera en cada release launchers personalizados o enlaces simbólicos de ~/.local/bin/claude, y actualmente /doctor muestra launchers administrados externamente
  • Las instalaciones nativas y con npm se autoactualizan por defecto
    • Homebrew, WinGet, apt, dnf y apk no son objetivos de autoactualización por defecto
    • Homebrew y WinGet pueden habilitarse voluntariamente con CLAUDE_CODE_PACKAGE_MANAGER_AUTO_UPDATE=1

Problemas de confianza que siguen en el proceso de despliegue

  • Si una persona supervisa varios agentes al mismo tiempo, es difícil revisar todas las preguntas en 60 segundos, y tampoco puede saber de antemano cuántos tokens o trabajo se consumirán después de una elección equivocada
  • No hay forma de verificar en registros públicos qué personas y procedimientos usó Anthropic en las etapas de redacción, revisión, aprobación, merge, documentación y comparación de releases de la función
  • La función se corrigió en unos dos días con una forma adecuada de opt-in, pero quedó en evidencia que, con un ciclo de lanzamientos diario y actualizaciones automáticas por defecto, pueden desplegarse cambios inesperados sin changelog
  • El análisis de ejecutables es una vía alternativa válida para verificar lo que realmente se desplegó, pero no puede sustituir changelogs precisos y bien editados
  • No hay base para asumir mala fe, y lo que permitirá juzgar qué mejoró en este proceso de despliegue es si este tipo de cosas vuelve a repetirse

1 comentarios

 
GN⁺ 3 시간 전
Opiniones en Hacker News
  • Soy Thariq, del equipo de Claude Code, quien creó AskUserQuestion. A medida que el modelo se volvió más potente, recibimos comentarios de que las tareas largas se bloqueaban por preguntas al inicio, así que hicimos este cambio para resolverlo, pero no alcanzó el estándar de calidad esperado y tampoco fue una forma normal de lanzar Claude Code
    Aunque la evaluación interna haya sido buena, debimos ofrecerlo como opt-in desde el principio y dejarlo en el registro de cambios. AskUserQuestion no fue diseñado como una protección, pero entiendo que algunos usuarios lo hayan adoptado así; buscaremos otras formas de equilibrar las tareas largas con la intervención del usuario y aprenderemos de este despliegue

    • En vez de una corrección puntual, se necesitan permisos granulares. Entre pedir aprobación cada vez y la ejecución totalmente automática y riesgosa, debería ser fácil definir límites como “ejecuta hasta terminar, pero no consultes la web, no toques archivos fuera del codebase y no borres nada”
    • Muchas veces me he alejado esperando que corra durante horas hasta terminar, y Claude se ha quedado detenido por una pregunta al inicio, desperdiciando tiempo de implementación. Por otro lado, AskUserQuestion es más cómodo de responder que una pregunta en texto normal, tanto que incluso le digo a Claude que lo use a propósito; también se agradece la actitud de admitir el error y hacerse responsable
    • ApprovIQ depende de Claude Code de forma central para lanzar su producto, pero se siente una asimetría en la que para Anthropic esta herramienta no parece tan importante como para sus usuarios. Es un producto que afecta la carrera de muchísima gente, así que enfatizar solo la responsabilidad personal con un “fue mi cambio” termina reduciendo la confianza
      Para una empresa del tamaño de Anthropic, deberían mostrar que reconocen y corrigen la falla de PR y de los procesos organizacionales que permitieron este despliegue, no centrarlo en una sola persona
    • En una empresa de punta valuada en decenas de miles de millones de dólares, salir públicamente a disculparse con frases como “fue mi cambio” y “no estuvo a la altura de nuestros estándares” es humano, pero no estratégico y hasta puede hacer ver débil a la empresa. Comparado con la época dorada de Apple o Google, probablemente también habría perjudicado la imagen de excelencia técnica, y reconocer responsabilidad públicamente también depende de cuándo, dónde y cómo se hace
      Me pregunto si esta transparencia es una nueva corriente de la era de internet o si la cultura de las empresas tecnológicas está cambiando
    • Como es difícil equilibrar esto con la velocidad de desarrollo, sería mejor tener múltiples canales de lanzamiento como Chrome. Si hubiera una versión estable con pocas actualizaciones, una beta para funciones como esta y hasta una canary si hace falta, cada quien podría elegir según su tolerancia al riesgo
  • La frase “no todas las funciones aparecen necesariamente en el registro de cambios” y que Anthropic no explique por qué ya no mantiene el changelog como un historial completo es especialmente frustrante. Ya no se sabe qué más están desplegando a escondidas(1)
    Lo único que hizo Boris Cherny en esa discusión fue quitar “extreme danger” del título del issue en GitHub(2). Al menos Anthropic agregó la opción y la dejó desactivada por defecto, pero OpenAI insiste en no permitir desactivar el límite de 60 segundos(3). Aun así, la herramienta de ejecución de Codex está más open source, así que los usuarios pueden hacer un fork y agregar la opción por su cuenta

    • Cada vez que sale un modelo nuevo, da la impresión de que los anteriores se vuelven más lentos o más torpes. Puede ser por asignación de recursos o cuantización, pero es difícil asegurarlo, y uno termina aprendiendo un flujo de trabajo por modelo y reajustando todo cada vez que algo falla, ya sea con Opus 4.8 o con Sonnet 5
    • Al parecer, como ya resolvieron la programación, ahora a cualquiera que quiera tomar sus propias decisiones lo tratan como un dinosaurio
  • Cuando se acaben los subsidios al costo de tokens, no confiaría en una herramienta de ejecución hecha por una empresa que también te va a cobrar por el cómputo. Ahora los incentivos están alineados, pero en el momento en que más tokens signifique más ganancias, el incentivo perverso será demasiado grande
    Al final, es probable que ganen las herramientas de ejecución open source, así que a las empresas también les convendría abrirlas ellas mismas

    • Si usas un agente de programación open source, una suscripción de 20 dólares al mes a OpenAI también puede ser una alternativa razonable. Tiene límites de uso, pero el precio no está mal
    • También sería fácil desplegar un aumento implícito de tokens subiendo la configuración de Chain of Thought (CoT) en el backend
  • Hace poco hice clic con el mouse para enfocar la ventana de la terminal, y Claude Code lo interpretó como un clic en una opción; fue un dolor de cabeza

    • También cambiaron de repente el comportamiento de copiar y pegar, y ahora copiar texto es muy incómodo. Nadie quiere software cuyos comportamientos básicos cambien todo el tiempo con actualizaciones diarias, y si obligas a los usuarios a tragarse funciones lanzadas como vibe coding, vas a recibir este tipo de rechazo
    • La terminal no es un entorno donde uno espere botones clicables; es muy incómodo y reduce la productividad
    • Si hubiera querido una app basada en mouse, habría usado una GUI. Cuesta entender por qué quieren recrear esa experiencia dentro de un entorno de texto
    • Primero preguntó si quería activarlo, pero lo encendí por error y fue molestísimo. Siempre hago clic para enfocar la terminal, y ahora eso termina ejecutando acciones reales
    • La nueva UI de pantalla completa es muy mala. La forma anterior de hacer scroll también falla cuando la usas mucho, pero al menos podías reiniciar y seguir donde ibas
  • Hoy me pasó directamente. Estaba leyendo la respuesta del agente cuando salió una pregunta, y antes siquiera de terminar de leerla ya había seleccionado algo automáticamente. No sé en qué momento se perdió la ingeniería de software

    • Un clic que hice para enfocar la ventana de la terminal fue tratado como aprobación aunque estaba en un lugar totalmente distinto de la pregunta, así que tuve que desactivar el modo TUI. Ni siquiera había activado el modo automático, pero estaba habilitado y estaba aprobando comandos de shell que no quería
      Incluso vi que le agregaba el flag de autoaprobación a terraform apply, lo cual es muy peligroso
  • No entiendo que Claude Code parezca montar una máquina virtual bastante pesada en la computadora y, aun así, por defecto no aísle nada en un sandbox. Los modelos recientes modifican la computadora de forma agresiva, y aun pidiéndole depurar código de UI frontend, empezó a reescribir archivos del sistema Linux accesibles con permisos de usuario
    Cuando lo metí en un sandbox, quedó claro con qué frecuencia intenta salirse de los límites por razones triviales, y crecieron aún más las razones para usar OpenCode y LLM locales

    • La herramienta de ejecución de Claude Code tiene muchas decisiones de diseño extrañas, así que a largo plazo OpenCode podría resultar mejor
  • Aunque hay muchas reacciones que lo interpretan con mala intención, en realidad parece más bien que el equipo de desarrollo creó una función que ellos mismos querían usar. Dejar corriendo una sesión de Claude y volver para encontrar que no hizo nada porque se quedó atorado en una sola pregunta sí es realmente muy frustrante
    Tampoco hay que creer que el único mecanismo para evitar un desastre es que Claude haga preguntas. Los límites de seguridad deben establecerse en los permisos otorgados desde fuera, no en el juicio interno de Claude. Por otro lado, este texto incluye frases como “Which cuts less far than it looks.”, y Claude probablemente no se habría detenido a preguntar por eso

    • Si el equipo de desarrollo creó una función que ellos mismos usarían, entonces es todavía peor
    • Que una función sea útil y activarla por defecto para todos sin una forma documentada de desactivarla son asuntos completamente distintos. Si fuera una opción documentada, estaría bien, pero el despliegue real no fue así, y el equipo y los procesos de Claude Code claramente fallaron
      No parece haber sido malicia, pero sí fue imprudente y descuidado, y no se ve que el equipo aprenda aunque ocurran incidentes similares. Claude Code no es una herramienta estable y confiable, sino algo más cercano a un experimento de punta, y ese es el costo que se asume al elegirlo en lugar de otras herramientas de ejecución
    • No se entiende cómo pudieron lanzar la función a cientos de miles de personas sin siquiera revisar qué tipo de preguntas hace Claude a los usuarios. Superpowers, el más usado en el mercado oficial de plugins, hace varias preguntas sobre los requisitos del producto desde el primer paso, así que no se debería omitir eso
      Ni siquiera había un parámetro para que Claude indicara la gravedad de la pregunta o el tiempo esperado de respuesta, y el límite era de apenas 60 segundos. Antes de siquiera terminar de revisar el contexto de la pregunta o volver después de consultar documentación en un segundo monitor para buscar la respuesta, ya la había saltado; con 60 segundos ni alcanza para leer bien el contexto
      Aunque no haya sido malicia, esto deja ver un gran vacío de criterio en el proceso de convertir una idea en un despliegue real
  • En el pasado, el plugin de Codex para VS Code también tuvo una función parecida y la retiraron rápidamente. Es común que LLM de distintos proveedores converjan en ideas y sesgos similares, así que da curiosidad si un LLM pudo haberles recomendado la misma idea a los PM o responsables de Claude

  • AskUserQuestion no es un mecanismo de aprobación de permisos, así que como comportamiento predeterminado parece razonable. Puede que haga falta una función de advertencia aparte, pero si el modelo mejora lo suficiente y puede elegir y avanzar por sí solo para que luego el usuario corrija, eso también facilita la gestión de múltiples agentes

  • Que Anthropic pueda cambiar de golpe todo el comportamiento de Claude Code es una de las razones por las que se creó el agente de programación Pi. Si el usuario invierte bastante tiempo en construir un flujo de trabajo encima del producto, la consistencia es muy importante