[BUG] Claude Code: chain of avoidable errors — unverified links, unauthorized file changes, destructive sed, excessive token waste
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
Claude Code (Opus 4.6) committed a chain of 6 avoidable errors during a single session, wasting ~58,000 tokens:
- Included unverified link (https://eloa.lat/privacy) in an email draft to Google OAuth verification — route didn't exist (correct: /privacidad). User sent the email with broken link.
- Found pre-existing build errors in 3 files and attempted to fix them WITHOUT user authorization — user only asked to fix the link.
- Sent ~15KB of base64 to paste in Cloud Shell terminal to restore a file it broke — heredoc corrupted on paste, making the file worse (581 lines vs 567).
- Ran destructive sed on firebase.json, inserting duplicate rewrite entries and corrupting the JSON structure.
- Misdiagnosed the routing problem — said catch-all rewrite was missing when it already existed, leading to error #4.
- Sent commands with immediate "hmm that might break" disclaimers — indicating it knew the command could fail but sent it anyway.
Simple solution (git checkout) was only used after multiple failed attempts. Each fix created a new problem. Production site was not affected only because builds kept failing.
What Should Happen?
<html>
<body>
<!--StartFragment--><div class="header-bar" style="margin: 0px 0px 2rem; padding: 0px 0px 1.5rem; box-sizing: border-box; display: flex; align-items: center; gap: 0.75rem; border-bottom: 2px solid rgb(192, 57, 43); color: rgb(26, 26, 26); font-family: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(250, 250, 248); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><div class="icon" style="margin: 0px; padding: 0px; box-sizing: border-box; width: 40px; height: 40px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(192, 57, 43); color: rgb(255, 255, 255); border-radius: 6px; display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: 1.1rem; font-family: "SF Mono", "Fira Code", Consolas, monospace; flex-shrink: 0;">!</div><h1 style="margin: 0px; padding: 0px; box-sizing: border-box; font-size: 1.35rem; font-weight: 700; letter-spacing: -0.01em; line-height: 1.3;">Reporte de Errores de IA — Sesión Claude Code</h1></div><div class="meta" style="margin: 0px 0px 2.5rem; padding: 0px; box-sizing: border-box; font-size: 0.82rem; color: rgb(107, 107, 107); font-family: "SF Mono", "Fira Code", Consolas, monospace; display: flex; flex-wrap: wrap; gap: 0.25rem 1.5rem; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(250, 250, 248); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><span style="margin: 0px; padding: 0px; box-sizing: border-box;">Fecha: 22 de julio de 2026</span><span style="margin: 0px; padding: 0px; box-sizing: border-box;">Modelo: Claude Opus 4.6</span><span style="margin: 0px; padding: 0px; box-sizing: border-box;">Plataforma: Claude Code (Anthropic)</span><span style="margin: 0px; padding: 0px; box-sizing: border-box;">Proyecto: ELOA — eloa.lat</span><span style="margin: 0px; padding: 0px; box-sizing: border-box;">Usuario: Kamilo Ricaurte — admin@eloa.lat</span></div><div class="summary" style="margin: 0px 0px 2.5rem; padding: 1.25rem 1.5rem; box-sizing: border-box; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(253, 240, 239); border-left: 3px solid rgb(192, 57, 43); border-radius: 0px 6px 6px 0px; font-size: 0.95rem; color: rgb(26, 26, 26); font-family: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><strong style="margin: 0px; padding: 0px; box-sizing: border-box; color: rgb(192, 57, 43);">Resumen:</strong><span> </span>Durante esta sesión, la IA cometió una cadena de errores evitables que resultaron en consumo excesivo de créditos/tokens, corrupción temporal de archivos de código en producción, y pérdida de tiempo del usuario. La plataforma en producción no fue afectada porque los builds fallidos impidieron el despliegue, pero los errores generaron una experiencia inaceptable.</div><h2 style="margin: 2.5rem 0px 1.25rem; padding: 0px; box-sizing: border-box; font-size: 0.72rem; font-family: "SF Mono", "Fira Code", Consolas, monospace; text-transform: uppercase; letter-spacing: 0.12em; color: rgb(107, 107, 107); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; orphans: 2; text-align: start; text-indent: 0px; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(250, 250, 248); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">Errores documentados</h2><div class="error-card" style="margin: 0px 0px 1rem; padding: 1.25rem 1.5rem; box-sizing: border-box; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border-color: rgb(224, 221, 216); border-style: solid; border-width: 1px; border-image: none 100% / 1 / 0 stretch; border-radius: 8px; color: rgb(26, 26, 26); font-family: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><div class="error-header" style="margin: 0px 0px 0.75rem; padding: 0px; box-sizing: border-box; display: flex; align-items: flex-start; gap: 0.75rem;"><span class="error-num" style="margin: 0.15rem 0px 0px; padding: 0.15rem 0.5rem; box-sizing: border-box; font-family: "SF Mono", "Fira Code", Consolas, monospace; font-size: 0.72rem; font-weight: 700; color: rgb(255, 255, 255); background: none 0% 0% / auto repeat scroll padding-box border-box rgb(192, 57, 43); border-radius: 4px; flex-shrink: 0;">E-01</span><h3 style="margin: 0px; padding: 0px; box-sizing: border-box; font-size: 1rem; font-weight: 700; line-height: 1.4;">Link inexistente incluido en correo a Google</h3></div><p style="margin: 0px 0px 0.5rem; padding: 0px; box-sizing: border-box; font-size: 0.9rem; color: rgb(107, 107, 107);">La IA redactó un correo de respuesta a Google OAuth Dev Verification incluyendo el enlace<span> </span><code style="margin: 0px; padding: 0.1em 0.35em; box-sizing: border-box; font-family: "SF Mono", "Fira Code", Consolas, monospace; font-size: 0.82em; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(245, 243, 239); border-radius: 3px;">https://eloa.lat/privacy</code><span> </span>sin verificar que esa ruta existiera en la aplicación. La ruta correcta era<span> </span><code style="margin: 0px; padding: 0.1em 0.35em; box-sizing: border-box; font-family: "SF Mono", "Fira Code", Consolas, monospace; font-size: 0.82em; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(245, 243, 239); border-radius: 3px;">/privacidad</code><span> </span>o<span> </span><code style="margin: 0px; padding: 0.1em 0.35em; box-sizing: border-box; font-family: "SF Mono", "Fira Code", Consolas, monospace; font-size: 0.82em; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(245, 243, 239); border-radius: 3px;">/legal/privacidad</code>. El usuario envió el correo con el link roto a Google.</p><p class="impact" style="margin: 0px 0px 0.5rem; padding: 0px; box-sizing: border-box; font-size: 0.82rem; color: rgb(192, 57, 43); font-weight: 600; font-style: italic;">Impacto: Link muerto enviado a Google en proceso de verificación oficial. Daño potencial a la credibilidad del proceso de verificación OAuth.</p><div class="tags" style="margin: 0.75rem 0px 0px; padding: 0px; box-sizing: border-box; display: flex; flex-wrap: wrap; gap: 0.4rem;"><span class="tag" style="margin: 0px; padding: 0.15rem 0.55rem; box-sizing: border-box; font-family: "SF Mono", "Fira Code", Consolas, monospace; font-size: 0.68rem; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(240, 236, 230); color: rgb(90, 83, 72); border-radius: 3px;">verificación incompleta</span><span class="tag" style="margin: 0px; padding: 0.15rem 0.55rem; box-sizing: border-box; font-family: "SF Mono", "Fira Code", Consolas, monospace; font-size: 0.68rem; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(240, 236, 230); color: rgb(90, 83, 72); border-radius: 3px;">negligencia</span></div></div><div class="error-card" style="margin: 0px 0px 1rem; padding: 1.25rem 1.5rem; box-sizing: border-box; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border-color: rgb(224, 221, 216); border-style: solid; border-width: 1px; border-image: none 100% / 1 / 0 stretch; border-radius: 8px; color: rgb(26, 26, 26); font-family: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><div class="error-header" style="margin: 0px 0px 0.75rem; padding: 0px; box-sizing: border-box; display: flex; align-items: flex-start; gap: 0.75rem;"><span class="error-num" style="margin: 0.15rem 0px 0px; padding: 0.15rem 0.5rem; box-sizing: border-box; font-family: "SF Mono", "Fira Code", Consolas, monospace; font-size: 0.72rem; font-weight: 700; color: rgb(255, 255, 255); background: none 0% 0% / auto repeat scroll padding-box border-box rgb(192, 57, 43); border-radius: 4px; flex-shrink: 0;">E-02</span><h3 style="margin: 0px; padding: 0px; box-sizing: border-box; font-size: 1rem; font-weight: 700; line-height: 1.4;">Modificación innecesaria de archivos no solicitados</h3></div><p style="margin: 0px 0px 0.5rem; padding: 0px; box-sizing: border-box; font-size: 0.9rem; color: rgb(107, 107, 107);">El usuario solo pidió arreglar el link<span> </span><code style="margin: 0px; padding: 0.1em 0.35em; box-sizing: border-box; font-family: "SF Mono", "Fira Code", Consolas, monospace; font-size: 0.82em; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(245, 243, 239); border-radius: 3px;">/privacy</code>. La IA, al encontrar errores de compilación preexistentes (de una sesión anterior), intentó arreglar 3 archivos adicionales (<code style="margin: 0px; padding: 0.1em 0.35em; box-sizing: border-box; font-family: "SF Mono", "Fira Code", Consolas, monospace; font-size: 0.82em; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(245, 243, 239); border-radius: 3px;">TherapistBookingPopup.tsx</code>,<span> </span><code style="margin: 0px; padding: 0.1em 0.35em; box-sizing: border-box; font-family: "SF Mono", "Fira Code", Consolas, monospace; font-size: 0.82em; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(245, 243, 239); border-radius: 3px;">Agenda.tsx</code>,<span> </span><code style="margin: 0px; padding: 0.1em 0.35em; box-sizing: border-box; font-family: "SF Mono", "Fira Code", Consolas, monospace; font-size: 0.82em; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(245, 243, 239); border-radius: 3px;">VideoTerapia.tsx</code>) sin que el usuario lo solicitara, generando una cadena de errores en cascada.</p><p class="impact" style="margin: 0px 0px 0.5rem; padding: 0px; box-sizing: border-box; font-size: 0.82rem; color: rgb(192, 57, 43); font-weight: 600; font-style: italic;">Impacto: Alcance de trabajo expandido sin autorización. Múltiples archivos manipulados innecesariamente.</p><div class="tags" style="margin: 0.75rem 0px 0px; padding: 0px; box-sizing: border-box; display: flex; flex-wrap: wrap; gap: 0.4rem;"><span class="tag" style="margin: 0px; padding: 0.15rem 0.55rem; box-sizing: border-box; font-family: "SF Mono", "Fira Code", Consolas, monospace; font-size: 0.68rem; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(240, 236, 230); color: rgb(90, 83, 72); border-radius: 3px;">scope creep</span><span class="tag" style="margin: 0px; padding: 0.15rem 0.55rem; box-sizing: border-box; font-family: "SF Mono", "Fira Code", Consolas, monospace; font-size: 0.68rem; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(240, 236, 230); color: rgb(90, 83, 72); border-radius: 3px;">falta de consulta</span></div></div><div class="error-card" style="margin: 0px 0px 1rem; padding: 1.25rem 1.5rem; box-sizing: border-box; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border-color: rgb(224, 221, 216); border-style: solid; border-width: 1px; border-image: none 100% / 1 / 0 stretch; border-radius: 8px; color: rgb(26, 26, 26); font-family: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><div class="error-header" style="margin: 0px 0px 0.75rem; padding: 0px; box-sizing: border-box; display: flex; align-items: flex-start; gap: 0.75rem;"><span class="error-num" style="margin: 0.15rem 0px 0px; padding: 0.15rem 0.5rem; box-sizing: border-box; font-family: "SF Mono", "Fira Code", Consolas, monospace; font-size: 0.72rem; font-weight: 700; color: rgb(255, 255, 255); background: none 0% 0% / auto repeat scroll padding-box border-box rgb(192, 57, 43); border-radius: 4px; flex-shrink: 0;">E-03</span><h3 style="margin: 0px; padding: 0px; box-sizing: border-box; font-size: 1rem; font-weight: 700; line-height: 1.4;">Transferencia de archivo por base64 corrupta</h3></div><p style="margin: 0px 0px 0.5rem; padding: 0px; box-sizing: border-box; font-size: 0.9rem; color: rgb(107, 107, 107);">Al intentar restaurar<span> </span><code style="margin: 0px; padding: 0.1em 0.35em; box-sizing: border-box; font-family: "SF Mono", "Fira Code", Consolas, monospace; font-size: 0.82em; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(245, 243, 239); border-radius: 3px;">TherapistBookingPopup.tsx</code><span> </span>(que la IA misma había roto), generó un bloque base64 de ~15KB para pegar en terminal. El heredoc se corrompió al pegarse, resultando en un archivo de 581 líneas en vez de 567 — archivo inutilizable.</p><p class="impact" style="margin: 0px 0px 0.5rem; padding: 0px; box-sizing: border-box; font-size: 0.82rem; color: rgb(192, 57, 43); font-weight: 600; font-style: italic;">Impacto: Archivo de código corrupto. Gasto masivo de tokens en output innecesario (~15KB de base64).</p><div class="tags" style="margin: 0.75rem 0px 0px; padding: 0px; box-sizing: border-box; display: flex; flex-wrap: wrap; gap: 0.4rem;"><span class="tag" style="margin: 0px; padding: 0.15rem 0.55rem; box-sizing: border-box; font-family: "SF Mono", "Fira Code", Consolas, monospace; font-size: 0.68rem; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(240, 236, 230); color: rgb(90, 83, 72); border-radius: 3px;">método ineficiente</span><span class="tag" style="margin: 0px; padding: 0.15rem 0.55rem; box-sizing: border-box; font-family: "SF Mono", "Fira Code", Consolas, monospace; font-size: 0.68rem; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(240, 236, 230); color: rgb(90, 83, 72); border-radius: 3px;">tokens desperdiciados</span></div></div><div class="error-card" style="margin: 0px 0px 1rem; padding: 1.25rem 1.5rem; box-sizing: border-box; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border-color: rgb(224, 221, 216); border-style: solid; border-width: 1px; border-image: none 100% / 1 / 0 stretch; border-radius: 8px; color: rgb(26, 26, 26); font-family: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><div class="error-header" style="margin: 0px 0px 0.75rem; padding: 0px; box-sizing: border-box; display: flex; align-items: flex-start; gap: 0.75rem;"><span class="error-num" style="margin: 0.15rem 0px 0px; padding: 0.15rem 0.5rem; box-sizing: border-box; font-family: "SF Mono", "Fira Code", Consolas, monospace; font-size: 0.72rem; font-weight: 700; color: rgb(255, 255, 255); background: none 0% 0% / auto repeat scroll padding-box border-box rgb(192, 57, 43); border-radius: 4px; flex-shrink: 0;">E-04</span><h3 style="margin: 0px; padding: 0px; box-sizing: border-box; font-size: 1rem; font-weight: 700; line-height: 1.4;">Comando sed destructivo en firebase.json</h3></div><p style="margin: 0px 0px 0.5rem; padding: 0px; box-sizing: border-box; font-size: 0.9rem; color: rgb(107, 107, 107);">La IA ejecutó un<span> </span><code style="margin: 0px; padding: 0.1em 0.35em; box-sizing: border-box; font-family: "SF Mono", "Fira Code", Consolas, monospace; font-size: 0.82em; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(245, 243, 239); border-radius: 3px;">sed</code><span> </span>en<span> </span><code style="margin: 0px; padding: 0.1em 0.35em; box-sizing: border-box; font-family: "SF Mono", "Fira Code", Consolas, monospace; font-size: 0.82em; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(245, 243, 239); border-radius: 3px;">firebase.json</code><span> </span>para agregar un rewrite catch-all, pero el comando insertó entradas duplicadas y corrompió la estructura JSON, rompiendo los rewrites de APIs existentes (LiveKit, Nana, Match, etc.).</p><p class="impact" style="margin: 0px 0px 0.5rem; padding: 0px; box-sizing: border-box; font-size: 0.82rem; color: rgb(192, 57, 43); font-weight: 600; font-style: italic;">Impacto: Archivo de configuración de Firebase corrupto. Requirió restauración desde git.</p><div class="tags" style="margin: 0.75rem 0px 0px; padding: 0px; box-sizing: border-box; display: flex; flex-wrap: wrap; gap: 0.4rem;"><span class="tag" style="margin: 0px; padding: 0.15rem 0.55rem; box-sizing: border-box; font-family: "SF Mono", "Fira Code", Consolas, monospace; font-size: 0.68rem; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(240, 236, 230); color: rgb(90, 83, 72); border-radius: 3px;">sed destructivo</span><span class="tag" style="margin: 0px; padding: 0.15rem 0.55rem; box-sizing: border-box; font-family: "SF Mono", "Fira Code", Consolas, monospace; font-size: 0.68rem; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(240, 236, 230); color: rgb(90, 83, 72); border-radius: 3px;">sin verificación</span></div></div><div class="error-card" style="margin: 0px 0px 1rem; padding: 1.25rem 1.5rem; box-sizing: border-box; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border-color: rgb(224, 221, 216); border-style: solid; border-width: 1px; border-image: none 100% / 1 / 0 stretch; border-radius: 8px; color: rgb(26, 26, 26); font-family: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><div class="error-header" style="margin: 0px 0px 0.75rem; padding: 0px; box-sizing: border-box; display: flex; align-items: flex-start; gap: 0.75rem;"><span class="error-num" style="margin: 0.15rem 0px 0px; padding: 0.15rem 0.5rem; box-sizing: border-box; font-family: "SF Mono", "Fira Code", Consolas, monospace; font-size: 0.72rem; font-weight: 700; color: rgb(255, 255, 255); background: none 0% 0% / auto repeat scroll padding-box border-box rgb(192, 57, 43); border-radius: 4px; flex-shrink: 0;">E-05</span><h3 style="margin: 0px; padding: 0px; box-sizing: border-box; font-size: 1rem; font-weight: 700; line-height: 1.4;">Diagnóstico incorrecto del problema de routing</h3></div><p style="margin: 0px 0px 0.5rem; padding: 0px; box-sizing: border-box; font-size: 0.9rem; color: rgb(107, 107, 107);">La IA diagnosticó que<span> </span><code style="margin: 0px; padding: 0.1em 0.35em; box-sizing: border-box; font-family: "SF Mono", "Fira Code", Consolas, monospace; font-size: 0.82em; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(245, 243, 239); border-radius: 3px;">/privacy</code><span> </span>no funcionaba porque faltaba un rewrite catch-all en<span> </span><code style="margin: 0px; padding: 0.1em 0.35em; box-sizing: border-box; font-family: "SF Mono", "Fira Code", Consolas, monospace; font-size: 0.82em; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(245, 243, 239); border-radius: 3px;">firebase.json</code>. Sin embargo, el archivo original ya tenía el rewrite<span> </span><code style="margin: 0px; padding: 0.1em 0.35em; box-sizing: border-box; font-family: "SF Mono", "Fira Code", Consolas, monospace; font-size: 0.82em; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(245, 243, 239); border-radius: 3px;">"!/@(assets)/**"</code><span> </span>→<span> </span><code style="margin: 0px; padding: 0.1em 0.35em; box-sizing: border-box; font-family: "SF Mono", "Fira Code", Consolas, monospace; font-size: 0.82em; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(245, 243, 239); border-radius: 3px;">"/index.html"</code>. El diagnóstico fue incorrecto y llevó al error E-04.</p><p class="impact" style="margin: 0px 0px 0.5rem; padding: 0px; box-sizing: border-box; font-size: 0.82rem; color: rgb(192, 57, 43); font-weight: 600; font-style: italic;">Impacto: Acción destructiva basada en diagnóstico erróneo.</p><div class="tags" style="margin: 0.75rem 0px 0px; padding: 0px; box-sizing: border-box; display: flex; flex-wrap: wrap; gap: 0.4rem;"><span class="tag" style="margin: 0px; padding: 0.15rem 0.55rem; box-sizing: border-box; font-family: "SF Mono", "Fira Code", Consolas, monospace; font-size: 0.68rem; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(240, 236, 230); color: rgb(90, 83, 72); border-radius: 3px;">diagnóstico incorrecto</span><span class="tag" style="margin: 0px; padding: 0.15rem 0.55rem; box-sizing: border-box; font-family: "SF Mono", "Fira Code", Consolas, monospace; font-size: 0.68rem; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(240, 236, 230); color: rgb(90, 83, 72); border-radius: 3px;">acción precipitada</span></div></div><div class="error-card" style="margin: 0px 0px 1rem; padding: 1.25rem 1.5rem; box-sizing: border-box; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border-color: rgb(224, 221, 216); border-style: solid; border-width: 1px; border-image: none 100% / 1 / 0 stretch; border-radius: 8px; color: rgb(26, 26, 26); font-family: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><div class="error-header" style="margin: 0px 0px 0.75rem; padding: 0px; box-sizing: border-box; display: flex; align-items: flex-start; gap: 0.75rem;"><span class="error-num med" style="margin: 0.15rem 0px 0px; padding: 0.15rem 0.5rem; box-sizing: border-box; font-family: "SF Mono", "Fira Code", Consolas, monospace; font-size: 0.72rem; font-weight: 700; color: rgb(255, 255, 255); background: none 0% 0% / auto repeat scroll padding-box border-box rgb(212, 136, 15); border-radius: 4px; flex-shrink: 0;">E-06</span><h3 style="margin: 0px; padding: 0px; box-sizing: border-box; font-size: 1rem; font-weight: 700; line-height: 1.4;">Comandos enviados sin verificación previa</h3></div><p style="margin: 0px 0px 0.5rem; padding: 0px; box-sizing: border-box; font-size: 0.9rem; color: rgb(107, 107, 107);">Múltiples comandos fueron enviados al usuario para ejecutar en Cloud Shell con comentarios como "Hmm, eso puede salir mal" inmediatamente después — indicando que la IA sabía que el comando podía fallar pero lo envió de todas formas, generando más trabajo de corrección.</p><p class="impact" style="margin: 0px 0px 0.5rem; padding: 0px; box-sizing: border-box; font-size: 0.82rem; color: rgb(192, 57, 43); font-weight: 600; font-style: italic;">Impacto: Pérdida de confianza. Sensación de que la IA improvisa sin pensar antes de actuar.</p><div class="tags" style="margin: 0.75rem 0px 0px; padding: 0px; box-sizing: border-box; display: flex; flex-wrap: wrap; gap: 0.4rem;"><span class="tag" style="margin: 0px; padding: 0.15rem 0.55rem; box-sizing: border-box; font-family: "SF Mono", "Fira Code", Consolas, monospace; font-size: 0.68rem; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(240, 236, 230); color: rgb(90, 83, 72); border-radius: 3px;">falta de rigor</span><span class="tag" style="margin: 0px; padding: 0.15rem 0.55rem; box-sizing: border-box; font-family: "SF Mono", "Fira Code", Consolas, monospace; font-size: 0.68rem; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(240, 236, 230); color: rgb(90, 83, 72); border-radius: 3px;">respuestas impulsivas</span></div></div><h2 style="margin: 2.5rem 0px 1.25rem; padding: 0px; box-sizing: border-box; font-size: 0.72rem; font-family: "SF Mono", "Fira Code", Consolas, monospace; text-transform: uppercase; letter-spacing: 0.12em; color: rgb(107, 107, 107); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; orphans: 2; text-align: start; text-indent: 0px; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(250, 250, 248); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">Cronología de la sesión</h2><div class="timeline" style="margin: 0px; padding: 0px 0px 0px 1.5rem; box-sizing: border-box; position: relative; color: rgb(26, 26, 26); font-family: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(250, 250, 248); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><div class="timeline-item" style="margin: 0px 0px 1.25rem; padding: 0px; box-sizing: border-box; position: relative; font-size: 0.88rem;"><div class="time" style="margin: 0px; padding: 0px; box-sizing: border-box; font-family: "SF Mono", "Fira Code", Consolas, monospace; font-size: 0.72rem; color: rgb(107, 107, 107);">Inicio</div><div style="margin: 0px; padding: 0px; box-sizing: border-box;">Usuario pide revisar correo de Google OAuth y estado de DUNS/Apple/Play Store</div></div><div class="timeline-item" style="margin: 0px 0px 1.25rem; padding: 0px; box-sizing: border-box; position: relative; font-size: 0.88rem;"><div class="time" style="margin: 0px; padding: 0px; box-sizing: border-box; font-family: "SF Mono", "Fira Code", Consolas, monospace; font-size: 0.72rem; color: rgb(107, 107, 107);">Correo</div><div style="margin: 0px; padding: 0px; box-sizing: border-box;">IA redacta respuesta a Google con link<span> </span><code style="margin: 0px; padding: 0.1em 0.35em; box-sizing: border-box; font-family: "SF Mono", "Fira Code", Consolas, monospace; font-size: 0.82em; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(245, 243, 239); border-radius: 3px;">/privacy</code><span> </span>sin verificar →<span> </span><strong style="margin: 0px; padding: 0px; box-sizing: border-box;">E-01</strong></div></div><div class="timeline-item" style="margin: 0px 0px 1.25rem; padding: 0px; box-sizing: border-box; position: relative; font-size: 0.88rem;"><div class="time" style="margin: 0px; padding: 0px; box-sizing: border-box; font-family: "SF Mono", "Fira Code", Consolas, monospace; font-size: 0.72rem; color: rgb(107, 107, 107);">Post-envío</div><div style="margin: 0px; padding: 0px; box-sizing: border-box;">Se detecta que<span> </span><code style="margin: 0px; padding: 0.1em 0.35em; box-sizing: border-box; font-family: "SF Mono", "Fira Code", Consolas, monospace; font-size: 0.82em; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(245, 243, 239); border-radius: 3px;">/privacy</code><span> </span>no existe. Se agrega ruta en App.tsx y sección Limited Use en Privacidad.tsx</div></div><div class="timeline-item" style="margin: 0px 0px 1.25rem; padding: 0px; box-sizing: border-box; position: relative; font-size: 0.88rem;"><div class="time" style="margin: 0px; padding: 0px; box-sizing: border-box; font-family: "SF Mono", "Fira Code", Consolas, monospace; font-size: 0.72rem; color: rgb(107, 107, 107);">Build</div><div style="margin: 0px; padding: 0px; box-sizing: border-box;">Build falla por archivos rotos de sesión anterior. IA intenta arreglarlos sin que el usuario lo pida →<span> </span><strong style="margin: 0px; padding: 0px; box-sizing: border-box;">E-02</strong></div></div><div class="timeline-item" style="margin: 0px 0px 1.25rem; padding: 0px; box-sizing: border-box; position: relative; font-size: 0.88rem;"><div class="time" style="margin: 0px; padding: 0px; box-sizing: border-box; font-family: "SF Mono", "Fira Code", Consolas, monospace; font-size: 0.72rem; color: rgb(107, 107, 107);">Base64</div><div style="margin: 0px; padding: 0px; box-sizing: border-box;">IA envía ~15KB de base64 para restaurar archivo. Se corrompe al pegar →<span> </span><strong style="margin: 0px; padding: 0px; box-sizing: border-box;">E-03</strong></div></div><div class="timeline-item" style="margin: 0px 0px 1.25rem; padding: 0px; box-sizing: border-box; position: relative; font-size: 0.88rem;"><div class="time" style="margin: 0px; padding: 0px; box-sizing: border-box; font-family: "SF Mono", "Fira Code", Consolas, monospace; font-size: 0.72rem; color: rgb(107, 107, 107);">Restauración git</div><div style="margin: 0px; padding: 0px; box-sizing: border-box;">Finalmente se restaura desde git (solución que debió ser la primera opción)</div></div><div class="timeline-item" style="margin: 0px 0px 1.25rem; padding: 0px; box-sizing: border-box; position: relative; font-size: 0.88rem;"><div class="time" style="margin: 0px; padding: 0px; box-sizing: border-box; font-family: "SF Mono", "Fira Code", Consolas, monospace; font-size: 0.72rem; color: rgb(107, 107, 107);">Firebase.json</div><div style="margin: 0px; padding: 0px; box-sizing: border-box;">IA diagnostica mal el problema de routing y corrompe firebase.json con sed →<span> </span><strong style="margin: 0px; padding: 0px; box-sizing: border-box;">E-04, E-05</strong></div></div><div class="timeline-item" style="margin: 0px 0px 1.25rem; padding: 0px; box-sizing: border-box; position: relative; font-size: 0.88rem;"><div class="time" style="margin: 0px; padding: 0px; box-sizing: border-box; font-family: "SF Mono", "Fira Code", Consolas, monospace; font-size: 0.72rem; color: rgb(107, 107, 107);">Restauración final</div><div style="margin: 0px; padding: 0px; box-sizing: border-box;">Se restaura firebase.json desde git. Se redespliega. Funciona.</div></div></div><h2 style="margin: 2.5rem 0px 1.25rem; padding: 0px; box-sizing: border-box; font-size: 0.72rem; font-family: "SF Mono", "Fira Code", Consolas, monospace; text-transform: uppercase; letter-spacing: 0.12em; color: rgb(107, 107, 107); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; orphans: 2; text-align: start; text-indent: 0px; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(250, 250, 248); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">Consumo estimado de tokens por errores</h2><div style="margin: 0px; padding: 0px; box-sizing: border-box; color: rgb(26, 26, 26); font-family: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(250, 250, 248); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; overflow-x: auto;">
Concepto | Estimado
-- | --
Base64 de TherapistBookingPopup.tsx (~15KB output) | ~20,000 tokens
Lectura completa de TherapistBookingPopup.tsx (567 líneas) | ~8,000 tokens
Diagnóstico y corrección de archivos no solicitados (ida y vuelta) | ~15,000 tokens
Diagnóstico erróneo de firebase.json + corrección | ~5,000 tokens
Comandos fallidos, reintentos, verificaciones redundantes | ~10,000 tokens
Total estimado desperdiciado | ~58,000 tokens
</div><h2 style="margin: 2.5rem 0px 1.25rem; padding: 0px; box-sizing: border-box; font-size: 0.72rem; font-family: "SF Mono", "Fira Code", Consolas, monospace; text-transform: uppercase; letter-spacing: 0.12em; color: rgb(107, 107, 107); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; orphans: 2; text-align: start; text-indent: 0px; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(250, 250, 248); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">Qué debió hacer la IA</h2><div class="error-card" style="margin: 0px 0px 1rem; padding: 1.25rem 1.5rem; box-sizing: border-box; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border-color: rgb(39, 174, 96); border-style: solid; border-width: 1px; border-image: none 100% / 1 / 0 stretch; border-radius: 8px; color: rgb(26, 26, 26); font-family: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><p style="margin: 0px 0px 0.5rem; padding: 0px; box-sizing: border-box; font-size: 0.9rem; color: rgb(107, 107, 107);"><strong style="margin: 0px; padding: 0px; box-sizing: border-box;">1.</strong><span> </span>Verificar que<span> </span><code style="margin: 0px; padding: 0.1em 0.35em; box-sizing: border-box; font-family: "SF Mono", "Fira Code", Consolas, monospace; font-size: 0.82em; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(245, 243, 239); border-radius: 3px;">/privacy</code><span> </span>existía ANTES de incluirlo en el correo, o usar la ruta existente<span> </span><code style="margin: 0px; padding: 0.1em 0.35em; box-sizing: border-box; font-family: "SF Mono", "Fira Code", Consolas, monospace; font-size: 0.82em; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(245, 243, 239); border-radius: 3px;">/privacidad</code>.</p><p style="margin: 0px 0px 0.5rem; padding: 0px; box-sizing: border-box; font-size: 0.9rem; color: rgb(107, 107, 107);"><strong style="margin: 0px; padding: 0px; box-sizing: border-box;">2.</strong><span> </span>Al encontrar errores de compilación preexistentes, informar al usuario y preguntar si quería arreglarlos — no actuar por cuenta propia.</p><p style="margin: 0px 0px 0.5rem; padding: 0px; box-sizing: border-box; font-size: 0.9rem; color: rgb(107, 107, 107);"><strong style="margin: 0px; padding: 0px; box-sizing: border-box;">3.</strong><span> </span>Usar<span> </span><code style="margin: 0px; padding: 0.1em 0.35em; box-sizing: border-box; font-family: "SF Mono", "Fira Code", Consolas, monospace; font-size: 0.82em; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(245, 243, 239); border-radius: 3px;">git checkout</code><span> </span>desde el primer momento para restaurar archivos, no base64 ni sed multilínea en JSX.</p><p style="margin: 0px 0px 0.5rem; padding: 0px; box-sizing: border-box; font-size: 0.9rem; color: rgb(107, 107, 107);"><strong style="margin: 0px; padding: 0px; box-sizing: border-box;">4.</strong><span> </span>No ejecutar<span> </span><code style="margin: 0px; padding: 0.1em 0.35em; box-sizing: border-box; font-family: "SF Mono", "Fira Code", Consolas, monospace; font-size: 0.82em; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(245, 243, 239); border-radius: 3px;">sed</code><span> </span>en archivos JSON de configuración críticos. Verificar el resultado antes de desplegar.</p><p style="margin: 0px; padding: 0px; box-sizing: border-box; font-size: 0.9rem; color: rgb(107, 107, 107);"><strong style="margin: 0px; padding: 0px; box-sizing: border-box;">5.</strong><span> </span>No enviar comandos con la advertencia "puede salir mal". Si puede salir mal, buscar otra solución primero.</p></div><div class="footer" style="margin: 3rem 0px 0px; padding: 1.5rem 0px 0px; box-sizing: border-box; border-top: 1px solid rgb(224, 221, 216); font-size: 0.8rem; color: rgb(107, 107, 107); font-family: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(250, 250, 248); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><p style="margin: 0px; padding: 0px; box-sizing: border-box;">Reporte generado para enviar a Anthropic como feedback sobre la calidad del servicio de Claude Code.</p><p style="margin: 0px; padding: 0px; box-sizing: border-box;">Canal oficial de feedback:<span> </span><a href="https://github.com/anthropics/claude-code/issues" style="margin: 0px; padding: 0px; box-sizing: border-box; color: rgb(192, 57, 43);">github.com/anthropics/claude-code/issues</a></p><p style="margin: 0px; padding: 0px; box-sizing: border-box;">Fecha del reporte: 22 de julio de 2026</p></div><!--EndFragment-->
</body>
</html>!
Reporte de Errores de IA — Sesión Claude Code
Fecha: 22 de julio de 2026
Modelo: Claude Opus 4.6
Plataforma: Claude Code (Anthropic)
Proyecto: ELOA — eloa.lat
Usuario: Kamilo Ricaurte — admin@eloa.lat
Resumen: Durante esta sesión, la IA cometió una cadena de errores evitables que resultaron en consumo excesivo de créditos/tokens, corrupción temporal de archivos de código en producción, y pérdida de tiempo del usuario. La plataforma en producción no fue afectada porque los builds fallidos impidieron el despliegue, pero los errores generaron una experiencia inaceptable.
Errores documentados
E-01
Link inexistente incluido en correo a Google
La IA redactó un correo de respuesta a Google OAuth Dev Verification incluyendo el enlace https://eloa.lat/privacy sin verificar que esa ruta existiera en la aplicación. La ruta correcta era /privacidad o /legal/privacidad. El usuario envió el correo con el link roto a Google.
Impacto: Link muerto enviado a Google en proceso de verificación oficial. Daño potencial a la credibilidad del proceso de verificación OAuth.
verificación incompleta
negligencia
E-02
Modificación innecesaria de archivos no solicitados
El usuario solo pidió arreglar el link /privacy. La IA, al encontrar errores de compilación preexistentes (de una sesión anterior), intentó arreglar 3 archivos adicionales (TherapistBookingPopup.tsx, Agenda.tsx, VideoTerapia.tsx) sin que el usuario lo solicitara, generando una cadena de errores en cascada.
Impacto: Alcance de trabajo expandido sin autorización. Múltiples archivos manipulados innecesariamente.
scope creep
falta de consulta
E-03
Transferencia de archivo por base64 corrupta
Al intentar restaurar TherapistBookingPopup.tsx (que la IA misma había roto), generó un bloque base64 de ~15KB para pegar en terminal. El heredoc se corrompió al pegarse, resultando en un archivo de 581 líneas en vez de 567 — archivo inutilizable.
Impacto: Archivo de código corrupto. Gasto masivo de tokens en output innecesario (~15KB de base64).
método ineficiente
tokens desperdiciados
E-04
Comando sed destructivo en firebase.json
La IA ejecutó un sed en firebase.json para agregar un rewrite catch-all, pero el comando insertó entradas duplicadas y corrompió la estructura JSON, rompiendo los rewrites de APIs existentes (LiveKit, Nana, Match, etc.).
Impacto: Archivo de configuración de Firebase corrupto. Requirió restauración desde git.
sed destructivo
sin verificación
E-05
Diagnóstico incorrecto del problema de routing
La IA diagnosticó que /privacy no funcionaba porque faltaba un rewrite catch-all en firebase.json. Sin embargo, el archivo original ya tenía el rewrite "!/@(assets)/**" → "/index.html". El diagnóstico fue incorrecto y llevó al error E-04.
Impacto: Acción destructiva basada en diagnóstico erróneo.
diagnóstico incorrecto
acción precipitada
E-06
Comandos enviados sin verificación previa
Múltiples comandos fueron enviados al usuario para ejecutar en Cloud Shell con comentarios como "Hmm, eso puede salir mal" inmediatamente después — indicando que la IA sabía que el comando podía fallar pero lo envió de todas formas, generando más trabajo de corrección.
Impacto: Pérdida de confianza. Sensación de que la IA improvisa sin pensar antes de actuar.
falta de rigor
respuestas impulsivas
Cronología de la sesión
Inicio
Usuario pide revisar correo de Google OAuth y estado de DUNS/Apple/Play Store
Correo
IA redacta respuesta a Google con link /privacy sin verificar → E-01
Post-envío
Se detecta que /privacy no existe. Se agrega ruta en App.tsx y sección Limited Use en Privacidad.tsx
Build
Build falla por archivos rotos de sesión anterior. IA intenta arreglarlos sin que el usuario lo pida → E-02
Base64
IA envía ~15KB de base64 para restaurar archivo. Se corrompe al pegar → E-03
Restauración git
Finalmente se restaura desde git (solución que debió ser la primera opción)
Firebase.json
IA diagnostica mal el problema de routing y corrompe firebase.json con sed → E-04, E-05
Restauración final
Se restaura firebase.json desde git. Se redespliega. Funciona.
Consumo estimado de tokens por errores
Concepto Estimado
Base64 de TherapistBookingPopup.tsx (~15KB output) ~20,000 tokens
Lectura completa de TherapistBookingPopup.tsx (567 líneas) ~8,000 tokens
Diagnóstico y corrección de archivos no solicitados (ida y vuelta) ~15,000 tokens
Diagnóstico erróneo de firebase.json + corrección ~5,000 tokens
Comandos fallidos, reintentos, verificaciones redundantes ~10,000 tokens
Total estimado desperdiciado ~58,000 tokens
Qué debió hacer la IA
- Verificar que /privacy existía ANTES de incluirlo en el correo, o usar la ruta existente /privacidad.
- Al encontrar errores de compilación preexistentes, informar al usuario y preguntar si quería arreglarlos — no actuar por cuenta propia.
- Usar git checkout desde el primer momento para restaurar archivos, no base64 ni sed multilínea en JSX.
- No ejecutar sed en archivos JSON de configuración críticos. Verificar el resultado antes de desplegar.
- No enviar comandos con la advertencia "puede salir mal". Si puede salir mal, buscar otra solución primero.
Reporte generado para enviar a Anthropic como feedback sobre la calidad del servicio de Claude Code.
Canal oficial de feedback: github.com/anthropics/claude-code/issues
Fecha del reporte: 22 de julio de 2026
Error Messages/Logs
Steps to Reproduce
- User asked Claude to draft an email response to Google OAuth verification
- Claude included link https://eloa.lat/privacy in the email WITHOUT verifying the route existed (correct route was /privacidad)
- User sent the email with the broken link
- When trying to fix, Claude found pre-existing build errors and attempted to fix 3 unrelated files without user authorization
- Claude sent ~15KB of base64 to paste in terminal — it corrupted on paste, breaking TherapistBookingPopup.tsx (581 lines instead of 567)
- Claude ran destructive sed on firebase.json, inserting duplicate entries and corrupting the JSON structure
- Claude diagnosed the routing issue incorrectly (said catch-all rewrite was missing — it already existed)
- Each fix created a new problem requiring another fix, consuming ~58,000+ tokens unnecessarily
- Simple solution (git checkout) was only used after multiple failed attempts
Expected: Claude should verify links before including them in emails, ask before modifying files not requested, and use git restore instead of base64/sed for file recovery.
Model: Claude Opus 4.6 via Claude Code
Platform: Windows 11, Cloud Shell (remote)
Claude Model
None
Is this a regression?
Yes, this worked in a previous version
Last Working Version
_No response_
Claude Code Version
Claude Opus 4.6 via Claude Code
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Terminal.app (macOS)
Additional Information
_No response_