← Claude Code Hub
✦ Tip #229 Oct 15, 2026

Setup script de Claude Code en la nube: por qué falla y por qué tarda

Setup script en la nube de Claude Code: el nivel de red que bloquea la instalación, el límite de cinco minutos que te deja sin caché y lo que tiene que ir en un hook SessionStart.

Setup script de Claude Code en la nube: una línea de tiempo con el límite de unos cinco minutos, un script que termina antes y deja foto, otro que se pasa y se repite en cada sesión, y el reparto entre setup script (herramientas de la máquina) y hook SessionStart (dependencias del proyecto)

TL;DR En el setup script, solo las herramientas que no trae la máquina, y que termine en menos de cinco minutos. El npm install de tu proyecto va en un hook SessionStart que solo corre en la nube.

El setup script de un entorno en la nube se ejecuta como root en Ubuntu 24.04, antes de que arranque Claude Code. Si termina en unos cinco minutos, Anthropic guarda una foto del disco y las sesiones siguientes arrancan desde ella sin volver a ejecutarlo. De ese mecanismo salen los dos problemas: el script que tumba la sesión y la sesión que tarda en arrancar.

El reparto que los evita:

Setup script (en el entorno)    herramientas de la máquina   una vez, con caché
Hook SessionStart (en el repo)  dependencias del proyecto    en cada sesión

Por qué falla la instalación

Si el script sale con un código distinto de cero, la sesión no arranca. Las causas habituales:

Causa Qué pasa Arreglo
Acceso a la red en None Bloquea todos los registros de paquetes Vuelve a Trusted (De confianza)
Custom (Personalizado) sin la lista por defecto Solo pasan tus dominios, y npm y PyPI se quedan fuera Marca la casilla que añade los gestores de paquetes habituales
La clave del registro privado en Network secrets El script corre antes de que Claude Code se conecte al proxy que añade la clave Esa instalación no puede ir en el setup script
Bun Tiene problemas conocidos con el proxy de seguridad Usa npm o pnpm
Binarios precompilados La máquina es x86_64 aunque tu Mac sea ARM Usa la versión x86_64 para Linux

Para ver qué comando falla, empieza el script con set -x. A lo que no sea crítico ponle || true detrás, así un fallo puntual no te deja sin sesión.

Una diferencia que despista: un cambio de acceso a la red llega a las sesiones abiertas en un minuto, pero un cambio en el script solo lo ve una sesión nueva.

Por qué tarda en arrancar

1. Pasarte de cinco minutos te deja sin foto

El entorno no se guarda en caché, así que cada sesión nueva vuelve a pasar por el script, y puede colgarse o fallar con un error genérico del contenedor. Lanza en paralelo lo que no depende entre sí:

#!/bin/bash
set -x
(apt update && apt install -y shellcheck) &
docker pull mcr.microsoft.com/mssql/server:2022-latest &
wait

Si una descarga sola no cabe en el presupuesto, sácala a un hook SessionStart que la lance en segundo plano. Y quita los sleep de los reintentos: cuentan contra los cinco minutos.

2. La foto guarda archivos, no procesos

Los paquetes, las imágenes de Docker y los ficheros que escribe el script sobreviven. Un PostgreSQL que arrancó el script o un docker compose up no. Pídele a Claude que los arranque en cada sesión, o hazlo en el hook.

3. La foto no se entera de tu package.json

Solo se rehace cuando cambias el script o los dominios permitidos, o cuando caduca, a los siete días más o menos. Si cambias las dependencias del proyecto, el script no vuelve a ejecutarse hasta entonces. Por eso esas dependencias van en otro sitio.

Setup script o hook SessionStart

Setup script Hook SessionStart
Dónde se configura En el entorno En el .claude/settings.json del repo
Cuándo corre Antes de Claude Code, y no corre si hay foto Después, en cada sesión, también al reanudar
Dónde corre Solo en la nube En local y en la nube
Para qué Herramientas que no trae la máquina Dependencias del proyecto

1. Añade el hook al repo

En .claude/settings.json, como cualquier otro hook:

{
  "hooks": {
    "SessionStart": [
      {
        "matcher": "startup|resume",
        "hooks": [
          {
            "type": "command",
            "command": "bash \"$CLAUDE_PROJECT_DIR\"/scripts/install_pkgs.sh"
          }
        ]
      }
    ]
  }
}

2. Escribe el script que llama

En scripts/install_pkgs.sh:

#!/bin/bash
if [ "$CLAUDE_CODE_REMOTE" != "true" ]; then
  exit 0
fi
cd "$CLAUDE_PROJECT_DIR" || exit 1
npm install

CLAUDE_CODE_REMOTE vale true en la máquina de la nube y nunca en la tuya, así que en tu portátil el script sale sin instalar nada. La versión de la documentación guarda además un hash de package.json y package-lock.json y se salta npm install si no han cambiado, para que el hook no sume tiempo a cada arranque.

Tres límites del hook:

  • Tiene que estar en el repo. Los hooks de tu ~/.claude/settings.json no viajan a la nube.
  • Se corta a los 600 segundos si no le pones timeout.
  • Una sesión con varios repos no carga el .claude/settings.json de ninguno. Ahí las dependencias vuelven al setup script.

Documentación oficial: Configure cloud environments · Troubleshoot setup

Requisitos

  • Plan Pro, Max o Team (o Enterprise con asiento premium) y GitHub conectado.
  • Comprobado contra la documentación el 15 de octubre de 2026. La foto, el límite de cinco minutos y los siete días son aproximados según Anthropic.
Guía gratuita

Los 51 esenciales, en una guía.

Una página por tip. Cinco capítulos. Lo que de verdad uso a diario en producción. Sin teoría, sin humo.

  • I. Empieza bien 10 tips
  • II. Conciencia 3 tips
  • III. Maestría 22 tips
  • IV. Autonomía 10 tips
  • V. Comparativa 6 tips
¿Eres desarrollador/a Web profesional?

Recibirás la guía por email · Te unes a la newsletter Gravitas · Cancela cuando quieras

de 51
#

Wmedia · 51 Tips
Guía gratuita · 51 tips · 5 capítulos

Los 51 esenciales, en una guía.

¿Eres desarrollador/a Web profesional? · Cancela cuando quieras
Workshop para equipos

Multiplica el output de tu equipo sin sacrificar calidad: workshop AI First de 6 a 8 horas, online, sobre la plataforma Claude.

Ver el workshop

¿Quieres los 51 esenciales de Claude Code en una guía?