Variables de entorno¶
Todas las variables de entorno que lee gdd, todas las que fija para los comandos y los agentes que lanza, y lo que quita del entorno de los agentes.
Qué lee gdd¶
| Variable | La lee | Significado |
|---|---|---|
GDD_CHANGE |
gdd classify, snapshot, inbox, prepare, merge, release, g2, g3, guard |
El id del Change cuando la línea de comandos no da ninguno. Si está vacía, cuenta como no definida. |
GDD_ROLE |
todos los comandos | El rol para el que es la ejecución. Un valor que empieza por builder o reviewer hace que gdd gate, resume, release, changelog-line, selftest, learn y upgrade se nieguen a ejecutarse. Con cualquier valor, gdd g2 y gdd g3 no registran su ejecución. Sin definir: una persona. |
GITHUB_HEAD_REF |
gdd ci |
La rama que comprobar, tal como la fija GitHub Actions en una pull request; sin ella, la rama que hay en el checkout. |
HOME |
gdd session |
Dónde están las transcripciones de Claude Code: $HOME/.claude/projects/<project root>, con cada carácter de la raíz que no esté en A-Za-z0-9 convertido en -. |
PATH |
gdd init, gdd launch, gdd resume |
Dónde están los programas de los agentes (claude, codex, opencode): la primera carpeta absoluta que contiene el programa, ejecutable. gdd init sin --agents configura los agentes que encuentra ahí. |
gdd no lee GDD_ROOT ni GDD_STATE: encuentra la raíz del proyecto buscando
gdd/project.toml desde la carpeta en la que se ejecuta hacia arriba, y la raíz del estado
preguntando a git por el checkout principal.
Las demás variables pasan tal cual: los comandos de las puertas, los pasos de release,
gdd bootstrap y git se ejecutan en el mismo entorno que gdd, así que las variables propias de
git (GIT_AUTHOR_NAME y las demás) dicen quién hace los commits.
bin/gdd, el script que escribe gdd init, lee una más:
| Variable | Significado | Ejemplo |
|---|---|---|
GDD_BIN |
El programa gdd que ejecuta bin/gdd; sin ella, el gdd del PATH. |
GDD_BIN=/home/me/.cargo/bin/gdd bin/gdd status |
Qué reciben los comandos de las puertas¶
Cada comando de [g2] y [g3] se ejecuta con el entorno de gdd más cuatro variables. Las
listas tienen una ruta por línea, relativa a la raíz del proyecto.
| Variable | Valor |
|---|---|
GDD_CHANGE |
El id del Change. |
GDD_COLOR |
Su color: green, yellow o red. |
GDD_DIFF_FILES |
Lo que el Change ha tocado respecto a la rama principal; sus rutas planificadas mientras no ha tocado nada. Los comandos de mutación prueban solo estas. |
GDD_FEATURES |
Los ficheros de escenarios del Change: los ficheros .feature que necesitan G1 y que planifica o ha tocado, y los que su expediente selló en G1, ejemplos ocultos incluidos. Vacía cuando no tiene ninguno. |
gdd ci da las mismas cuatro a sus comandos de puerta. Otras ejecuciones las fijan de otra
forma:
| Ejecución | Variables |
|---|---|
gdd adopt, gdd learn |
GDD_CHANGE, GDD_COLOR, GDD_DIFF_FILES y GDD_FEATURES, todas vacías. |
gdd selftest |
GDD_CHANGE=selftest. |
gdd bootstrap |
No añade ninguna. |
Qué reciben los pasos de release¶
Cada paso de [release] se ejecuta con el entorno de gdd más:
| Variable | Valor |
|---|---|
GDD_CHANGE |
El id del Change. |
GDD_VERSION |
Una vez que el Change tiene versión ([versions] mode = "auto", una línea de changelog, en promote): la versión sin la v, por ejemplo 0.1.0. Sin definir hasta entonces. |
Variables que leen los ejecutores de escenarios¶
Los ejecutores de escenarios de los esqueletos de stack leen dos variables; gdd fija la primera, y los comandos de G3 fijan las dos.
| Variable | Significado |
|---|---|
GDD_FEATURES |
Los ficheros .feature que ejecutar, uno por línea; todos si está vacía. |
GDD_HIDDEN |
1: ejecuta también features/hidden/. Solo en Python y Rust; TypeScript, en cambio, deja fuera en G2 los escenarios con la etiqueta @hidden. |
Qué reciben los agentes¶
gdd lanza el propio programa de cada agente, nunca a través de un shell, desde el worktree del Change, sin nada en su entrada estándar y descartando su salida de error. Su entorno es el de gdd, primero vaciado y luego reconstruido:
- Todas las variables del entorno de gdd, salvo las que guardan un secreto, por su nombre o por su valor.
- Las variables quitadas que
[env] passdegdd/models.tomlnombra exactamente. - Cuatro variables propias:
| Variable | Valor |
|---|---|
GDD_CHANGE |
El id del Change. |
GDD_ROOT |
La raíz del proyecto: el worktree del Change, donde se ejecuta el agente. |
GDD_STATE |
La raíz del estado: el checkout principal, cuyo .gdd/ guarda los expedientes del Change. Los comandos de los agentes les indican que lean el estado allí. |
GDD_ROLE |
builder-test, builder-build, reviewer u orchestrator. |
Qué variables guardan un secreto¶
Una variable guarda un secreto, y se quita, en dos casos.
Su nombre lo dice. gdd divide el nombre en palabras por _, - y ., y las lee sin
distinguir mayúsculas de minúsculas. Cuando una de las palabras es KEY, KEYS, TOKEN,
TOKENS, SECRET, SECRETS, PASSWORD, PASSWORDS, PASSWD, PASS, CREDENTIAL,
CREDENTIALS, APIKEY o DSN, la variable se quita. Solo cuentan las palabras completas:
| Nombre | Sus palabras | Llega al agente |
|---|---|---|
OPENAI_API_KEY, XAPI_KEY, API_KEY_FILE |
KEY |
no |
TOKEN, github_token, MY_TOKENS, npm-tokens |
TOKEN, TOKENS |
no |
AWS_SECRET_ACCESS_KEY, client.secret |
SECRET, KEY |
no |
Db_Password, MYSQL_PASSWD, DB_PASS, PASS_FILE |
PASSWORD, PASSWD, PASS |
no |
GOOGLE_APPLICATION_CREDENTIALS, MAPS_APIKEY, SENTRY_DSN |
CREDENTIALS, APIKEY, DSN |
no |
KEYBOARD_LAYOUT, TOKENIZER_PATH, PASSAGE_DIR, MONKEY, APITOKEN |
ninguna de esas | sí |
PATH, HOME, PWD, EDITOR |
ninguna de esas | sí |
Su valor lo dice. Un valor que es una URL con una contraseña en la parte del usuario,
scheme://user:password@host o scheme://:password@host, guarda un secreto, se llame como se
llame la variable:
| Valor | Llega al agente |
|---|---|
postgres://app:***@db.example/app, redis://:PASSWORD@cache:6379 |
no |
https://example.com/docs, http://localhost:8080, https://me@host (sin contraseña) |
sí |
Así, DATABASE_URL=postgres://app:***@db.example/app nunca llega a un agente, mientras que
DOCS_URL=https://example.com/docs sí.
Pasa una variable a propósito¶
[env] pass en gdd/models.toml lista, por su nombre exacto, las variables que reciben los
agentes aunque guarden un secreto:
Warning
Un secreto que no delatan ni su nombre ni su valor (una clave en bruto en STRIPE_LIVE, o en
APITOKEN, que es una sola palabra) llega a los agentes. Mantén las credenciales de
producción fuera del entorno desde el que lanzas los Changes.
Los agentes usan sus propios inicios de sesión (suscripciones), no claves que gdd les pase. Un
comando bin/gdd que ejecuta un agente hereda el entorno del agente, así que sus comandos de
puerta tampoco ven las variables quitadas.
Ver también¶
- Roles: qué puede hacer cada
GDD_ROLE. - models.toml:
[env] passy el resto de ajustes de los agentes. - Mantener honestos a los agentes: por qué los secretos se mantienen lejos de los agentes.
- Ejecuta las puertas en CI:
gdd ciyGITHUB_HEAD_REF.