tawasuyu

sergio/takana

> Una distribución Linux construida con un laboratorio funcional y hermético en el > sótano, y una terminal mutable, clásica y anárquica en el piso de arriba — diseñada > desde el suelo para que una IA programadora entienda, modifique y co…

TOML 1572Shell 203Rust 109Markdown 993728 Definitions

claude abre DONDE ESTÁS PARADO, no en /opt/takana

Reportado tal cual: «entro al repo y ejecuto claude, pero claude sigue estando en /opt/takana y no me
agarra el repo». Era literal: el lanzador tenía el destino cableado a /opt/takana, así que desde
/work/sergio/takana abría el árbol del root — y encima con la memoria de ESE proyecto, porque la
memoria del agente se indexa por ruta de trabajo.

Ahora el defecto es $PWD; PROY sigue ganando cuando se lo pasa a propósito, y si la ruta no existe
cae a /opt/takana. Probado con un doble del binario en los tres casos.

Y el `cd` de adentro ahora falla ruidosamente: la jaula sólo monta lo concedido, así que desde una
ruta no concedida no hay nada que abrir. Antes eso se lo tragaba un `&&` y el agente arrancaba en `/`
sin decir por qué.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

9db1845f22d6ee36e1e8da56b7aed04d65d5fdb1 · by Sergio · (1 month ago) · parent e04089b22 · browse the tree at this commit

Semantic delta

No definition changed: this change is text, documentation or data.

1 files · +20 −4

diff --git a/scripts/servidor/claude-caja.sh b/scripts/servidor/claude-caja.sh
index de463a28..939c79c6 100755
--- a/scripts/servidor/claude-caja.sh
+++ b/scripts/servidor/claude-caja.sh
@@ -53,12 +53,28 @@ _inst="claude"
 
 # El `cd` no es comodidad: la memoria del agente se indexa POR RUTA DE TRABAJO. Desde `/` —que es
 # donde `qorpa run` deja el shell— la sesión usa el proyecto `-` y el agente empieza sin saber nada
-# aunque su memoria esté en disco. `PROY` permite abrir el agente sobre OTRO proyecto:
+# aunque su memoria esté en disco.
 #
-#   PROY=/opt/tawasuyu claude
+# ⚠ **Y ABRE DONDE ESTÁS PARADO, no en un sitio fijo** (2026-09-18). Antes el destino era
+# `/opt/takana` cableado, así que `cd /work/sergio/takana && claude` abría… `/opt/takana`: el agente
+# contestaba sobre OTRO árbol —el del root— y encima con la memoria de ese proyecto. Se reportó como
+# «entro al repo y claude sigue en /opt/takana», y era literal. Ahora el defecto es `$PWD`; el
+# cableado queda sólo para cuando no hay `PWD` utilizable.
+#
+# `PROY` sigue existiendo para abrirlo sobre otro árbol a propósito:
+#
+#   PROY=/work/sergio/tawasuyu claude
 # ⚠ El `shift 2` no es adorno: sin él, el HOME y el proyecto que se pasan como posicionales se
 # cuelan COMO ARGUMENTOS del agente. Medido: la primera versión abrió la sesión con el prompt
 # «/home/sergio», y el agente contestó —con razón— que eso es una ruta, no un comando.
+# ⚠ El `cd` de adentro FALLA RUIDOSAMENTE: la jaula sólo monta los directorios concedidos, así que
+# desde una ruta no concedida el `cd` no encuentra nada. Antes eso se tragaba con `&&` y el agente
+# arrancaba en `/` sin decir por qué; ahora lo dice y sale.
+_proy="${PROY:-$PWD}"
+[ -d "$_proy" ] || _proy=/opt/takana
+
 exec takana qorpa run "$_inst" -- sh -c \
-  'hogar="$1"; proy="$2"; shift 2; cd "$proy" && exec env HOME="$hogar" TERM="${TERM:-xterm-256color}" /work/claude-cli/2.1.240 "$@"' \
-  _ "$_hogar" "${PROY:-/opt/takana}" "$@"
+  'hogar="$1"; proy="$2"; shift 2
+   cd "$proy" 2>/dev/null || { echo "claude: adentro de la jaula no existe \"$proy\" — ¿está concedido ese directorio en la instancia? (ver grants.dirs)" >&2; exit 1; }
+   exec env HOME="$hogar" TERM="${TERM:-xterm-256color}" /work/claude-cli/2.1.240 "$@"' \
+  _ "$_hogar" "$_proy" "$@"