# Codex /goal: cómo activarlo, usarlo y comprobar el resultado

> Con /goal puedes mantener un objetivo en el chat de Codex mientras el trabajo avanza entre turnos. Si no aparece, comprueba la versión y activa features.goals; después define una prueba que permita distinguir una tarea terminada de una ejecución detenida.

- URL: https://blog.laozhang.ai/es/posts/codex-goal
- Published: 2026-05-04
- Updated: 2026-10-08
- Author: LaoZhang AI Team (https://blog.laozhang.ai/es/about)
- Topic: Herramientas y agentes
- Tags: OpenAI Codex, Codex CLI, Codex /goal, Agentes de programación, Herramientas de desarrollo

---
Para iniciar un objetivo en Codex, escribe **`/goal` seguido del resultado que quieres conseguir en el campo de entrada de Codex**. Puedes consultar el objetivo con `/goal`, modificarlo con `/goal edit` y controlarlo con `/goal pause`, `/goal resume` y `/goal clear`. La [guía oficial de comandos](https://learn.chatgpt.com/docs/developer-commands?surface=cli#set-or-view-a-task-goal-with-goal) documenta estas operaciones; ya no es necesario deducir su existencia a partir del código fuente de una versión antigua.

Si el comando no aparece, la [guía oficial de activación](https://learn.chatgpt.com/use-cases/follow-goals#introduction) indica que debes habilitar `features.goals`. La comprobación de versión y las dos formas de activarlo están explicadas abajo. Una vez disponible, lo decisivo es definir qué resultado aceptarás y cómo comprobarlo: que Codex se detenga no demuestra que haya terminado la tarea.

## Qué hace un objetivo y cuándo merece la pena usarlo

`/goal` conserva un objetivo en el **chat actual** para que Codex pueda seguir trabajando hacia él entre turnos. Encaja cuando sabes qué resultado necesitas, pero todavía no conoces todos los pasos: corregir una importación con varios casos defectuosos, investigar un fallo intermitente o completar una migración con pruebas de compatibilidad. Según el [Cookbook de OpenAI](https://developers.openai.com/cookbook/examples/codex/using_goals_in_codex), el objetivo pertenece al hilo de conversación; no se convierte en memoria global ni en una instrucción de proyecto en `AGENTS.md`.

Un mensaje normal basta para cambiar una etiqueta o explicar un error. Si todavía tienes que decidir qué construir, empieza por planificar. La diferencia práctica entre **goal y plan** es que el plan ordena el trabajo, mientras que el objetivo establece una condición que debe cumplirse antes de darlo por terminado. El Cookbook también precisa que una ejecución dedicada solo a planificar no activa por sí misma la continuación automática.

La persistencia no garantiza una ejecución ilimitada. Codex puede continuar cuando el objetivo está activo, el chat está inactivo y queda presupuesto, sin otro turno, entrada pendiente o trabajo en curso. Es el comportamiento descrito en el Cookbook, no una promesa de trabajar con el ordenador apagado o durante un número fijo de horas.

## Cómo activar `/goal` si no aparece

Comprueba primero el cliente en el que estás escribiendo. **Los comandos `/goal` se introducen dentro de Codex; no son comandos de tu shell.** En cambio, las órdenes de versión, instalación y activación que siguen sí se ejecutan en un terminal.

### 1. Comprueba la versión del CLI

```bash
codex --version
```

El [Cookbook oficial](https://developers.openai.com/cookbook/examples/codex/using_goals_in_codex) sitúa la incorporación de Goals en **Codex 0.128.0**. Es la versión de introducción, no una recomendación de instalar exactamente esa versión ni una identificación de la más reciente. Si tu CLI es anterior, actualízalo con el gestor que usaste para instalarlo.

Para una instalación con npm:

```bash
npm install -g @openai/codex@latest
codex --version
```

Para una instalación con Homebrew:

```bash
brew update
brew upgrade --cask codex
codex --version
```

Estas órdenes son las vías de actualización que recoge el Cookbook. No ejecutes ambas para una misma instalación. La versión del CLI tampoco demuestra qué versión utiliza una aplicación de escritorio distinta.

### 2. Habilita Goals

La [documentación de Follow a goal](https://learn.chatgpt.com/use-cases/follow-goals#introduction) ofrece esta orden de terminal:

```bash
codex features enable goals
```

Como alternativa, habilita la función en `config.toml`:

```toml
[features]
goals = true
```

Si ya tienes una sección `[features]`, añade o modifica `goals` dentro de ella; evita crear otra sección con el mismo nombre. La activación documentada usa `config.toml` y `features.goals`. No necesitas añadir `multi_agent = true` para seguir estas instrucciones.

### 3. Comprueba el menú en el cliente que vas a usar

Vuelve al campo de entrada de Codex, escribe `/` y busca `/goal`. Después establece un objetivo pequeño y consúltalo con `/goal`: debes poder reconocer el texto que acabas de fijar en el chat activo. Ese es un primer indicio de que estás usando la función; aún no prueba que la tarea haya terminado.

La guía actual de comandos también recoge `/goal` para escritorio e IDE. Eso no permite afirmar que todas las instalaciones, cuentas y versiones expongan el mismo comportamiento. Si sigue faltando en la App o el IDE, anota ese cliente y su versión por separado; no concluyas que la actualización del CLI ha actualizado también la aplicación.

![Pasos para comprobar la versión de Codex, habilitar Goals y encontrar /goal en el cliente utilizado](https://blog.laozhang.ai/posts/es/codex-goal/img/explainer-3.webp)

## Comandos para establecer, ver, editar y detener el objetivo

Estas son las operaciones documentadas actualmente en la [guía de comandos de Codex](https://learn.chatgpt.com/docs/developer-commands?surface=cli#set-or-view-a-task-goal-with-goal):

| Entrada en Codex | Para qué sirve |
| --- | --- |
| `/goal <objetivo>` | Establecer el resultado que Codex debe perseguir |
| `/goal` | Consultar el objetivo actual |
| `/goal edit` | Revisar el texto del objetivo |
| `/goal pause` | Pausar el objetivo activo |
| `/goal resume` | Reanudar un objetivo pausado |
| `/goal clear` | Quitar el objetivo del chat |

El texto debe tener contenido y no superar **4.000 caracteres**. Si necesitas especificaciones largas, guárdalas en un archivo del proyecto y haz que el objetivo señale ese archivo. Evita depender de `/goal budget`, `/goal status` o `/goal complete`: esos subcomandos no aparecen en las fuentes oficiales citadas aquí.

Tras editar, vuelve a consultar `/goal` para confirmar qué resultado estás pidiendo ahora. Si cambias el alcance a mitad del trabajo, revisa también si las pruebas anteriores siguen demostrando el nuevo objetivo.

Pausar o limpiar el objetivo controla su continuidad. **No revierte archivos ya modificados ni deshace solicitudes enviadas.** Para revisar o recuperar cambios tendrás que inspeccionar los archivos y utilizar las herramientas del proyecto que correspondan.

## Ejemplo: corregir un importador de catálogo CSV

Supón que tu proyecto ya tiene `scripts/limpiar_catalogo.py`, pero falla cuando un catálogo contiene identificadores repetidos o vacíos. Quieres que Codex investigue el script y lo corrija sin tocar otras funciones. El ejemplo siguiente define una tarea concreta; no representa una ejecución real de Goals realizada para este artículo.

Prepara `tests/fixtures/catalogo.csv` con este contenido en UTF-8:

```csv
sku,nombre
 A-01 ,Lámpara
A-01,Lámpara duplicada
B-02,"Mesa, roble"
,Artículo sin referencia
```

Para ese archivo, la salida aceptable es `salida/catalogo.csv` con las columnas `sku,nombre`, los espacios del SKU recortados y la primera aparición de cada SKU conservada. El duplicado y la fila sin SKU deben figurar en `salida/incidencias.csv`, con las columnas `fila,motivo`: `duplicado` para la línea 3 y `sku_vacio` para la línea 5. La numeración incluye la cabecera como línea 1.

Antes de activar el objetivo, facilita a Codex el CSV y el verificador de la sección siguiente, pegándolos en el chat o guardándolos en archivos del proyecto. Así podrá consultar las condiciones de aceptación. Después escribe en su campo de entrada:

```text
/goal Corrige scripts/limpiar_catalogo.py para importar tests/fixtures/catalogo.csv en UTF-8. La ejecución python3 scripts/limpiar_catalogo.py tests/fixtures/catalogo.csv --salida salida/catalogo.csv --incidencias salida/incidencias.csv debe recortar espacios del SKU, conservar la primera fila de cada SKU y registrar duplicados o SKU vacíos con su número de línea. Mantén los nombres, acentos y campos entrecomillados. Limita los cambios al importador y sus pruebas. Comprueba los dos CSV con el verificador indicado abajo, añade pruebas de regresión para estos casos y entrega los comandos ejecutados, sus resultados y los archivos modificados. Si una dependencia impide verificarlo, explica qué falta y qué queda pendiente antes de declararlo terminado.
```

La orden de Python de ese objetivo es **la interfaz solicitada para el script del ejemplo**, no una orden propia de Codex ni una afirmación de que ya existe en tu repositorio. Adapta el nombre y los argumentos si tu importador utiliza otra interfaz.

Aquí el agente puede decidir dónde está el fallo y qué cambios necesita. Tú fijas el comportamiento observable, los archivos permitidos y las pruebas que permiten aceptar el resultado. Pedir “arregla la importación” sin esas condiciones dejaría sin resolver qué hacer con duplicados y filas incompletas.

### Comprueba los archivos con una prueba independiente

Después de ejecutar el importador, lee los CSV con un verificador que no utilice sus propias funciones. Para el archivo de ejemplo, este comando comprueba cabeceras, valores, orden e incidencias:

```bash
python3 - <<'PY'
import csv
from pathlib import Path

with Path("salida/catalogo.csv").open(encoding="utf-8", newline="") as f:
    reader = csv.DictReader(f)
    assert reader.fieldnames == ["sku", "nombre"], "Cabecera del catálogo incorrecta"
    catalogo = list(reader)

assert catalogo == [
    {"sku": "A-01", "nombre": "Lámpara"},
    {"sku": "B-02", "nombre": "Mesa, roble"},
], "El catálogo no coincide con el resultado esperado"

with Path("salida/incidencias.csv").open(encoding="utf-8", newline="") as f:
    reader = csv.DictReader(f)
    assert reader.fieldnames == ["fila", "motivo"], "Cabecera de incidencias incorrecta"
    incidencias = list(reader)

assert incidencias == [
    {"fila": "3", "motivo": "duplicado"},
    {"fila": "5", "motivo": "sku_vacio"},
], "Las incidencias no coinciden con las filas descartadas"
print("Comprobación correcta: 2 artículos y 2 incidencias")
PY
```

El resultado esperado es `Comprobación correcta: 2 artículos y 2 incidencias`. Si falta un archivo o una aserción falla, este caso todavía no está resuelto. La prueba cubre ese catálogo concreto: no demuestra por sí sola que el importador maneje todos los archivos posibles. Para aceptar la corrección del proyecto, comprueba además las pruebas de regresión y el diff.

El verificador se ha comprobado de forma aislada con los archivos esperados y con una salida alterada que debía fallar. Esa comprobación valida el ejemplo de aceptación; no equivale a haber ejecutado `/goal`, reparado un importador real ni medido la autonomía de Codex.

## Cómo saber si terminó o solo dejó de trabajar

Pide un cierre que relacione cada criterio con una prueba concreta. En el caso del catálogo, necesitas los dos archivos, la salida del verificador, el resultado de las pruebas de regresión y la lista de cambios. Un mensaje “ya está” o un registro largo de intentos no sustituye esos elementos.

![Esquema del ciclo de un objetivo de Codex y su comprobación final](https://blog.laozhang.ai/posts/es/codex-goal/img/explainer-2.webp)

| Situación al detenerse | Qué puedes dar por confirmado | Siguiente acción |
| --- | --- | --- |
| Existen los entregables y pasan las comprobaciones acordadas | El resultado cumple los criterios comprobados | Revisa los cambios y decide si aceptarlos |
| Se agotó el presupuesto | Se alcanzó un límite de trabajo | Examina lo completado y lo pendiente antes de continuar |
| Falta una dependencia o una decisión necesaria | Hay un bloqueo descrito, si se aporta la causa y la evidencia | Resuelve esa dependencia o ajusta el alcance |
| Pausaste, interrumpiste o limpiaste el objetivo | La continuidad se ha detenido | Inspecciona el estado de los archivos antes de reanudar |

El [Cookbook](https://developers.openai.com/cookbook/examples/codex/using_goals_in_codex) indica que al alcanzar el presupuesto Codex debe dejar el trabajo sustantivo y resumir avances, bloqueos y siguiente paso. **Presupuesto agotado y objetivo completado son resultados diferentes.** También describe que una interrupción pausa el objetivo y que una continuación sin llamadas a herramientas suprime otra continuación automática.

Puedes pedir “si tres intentos no aportan información nueva, detente y explica el bloqueo”. Es una instrucción de trabajo, no un contador técnico que imponga por sí mismo un máximo de tres ejecuciones. Lo mismo ocurre con “gasta menos de cierta cantidad”: escribirlo en el objetivo no crea un límite de facturación.

Para integraciones, la [documentación de app-server](https://learn.chatgpt.com/docs/app-server#manage-a-thread-goal) describe `thread/goal/set`, `thread/goal/get` y `thread/goal/clear`, además de `tokenBudget`, `tokensUsed` y `timeUsedSeconds`. Es una interfaz de desarrollo para gestionar el estado del objetivo, no una receta necesaria para activar `/goal` ni una equivalencia exacta entre tokens, euros y cuota de una suscripción.

## Si aparece el comando pero falla el objetivo

Que `/goal` no aparezca y que falle al establecer o leer un objetivo son síntomas distintos. Para el primero, sigue las comprobaciones de versión y activación. Para el segundo, recoge **el cliente, su versión, el error exacto y la operación que falló**; consulta el objetivo actual si esa operación sigue funcionando.

Comprueba si intentabas editar o reanudar un objetivo existente, o establecer uno nuevo en otro chat. Esa información permite distinguir problemas de estado de problemas de disponibilidad, aunque no demuestra por sí sola la causa. Si persiste, aporta el contexto y los fragmentos pertinentes de los registros, retirando claves y datos privados. No hay base en las fuentes citadas para tratar cualquier error de Goals como una señal de que debas borrar conversaciones, reiniciar credenciales o reinstalar todo.

## Preguntas frecuentes

### ¿Dónde escribo `/goal`: en el terminal o en Codex?

En el campo de entrada de Codex. Si usas Codex CLI, entra primero en su interfaz interactiva y escribe ahí `/goal <objetivo>`. `codex --version` y `codex features enable goals` son órdenes de terminal; `/goal` es un comando de la conversación. La [guía oficial](https://learn.chatgpt.com/docs/developer-commands?surface=cli#set-or-view-a-task-goal-with-goal) documenta esa entrada.

### ¿Qué hago si `/goal` no aparece en la App?

Comprueba la versión de esa aplicación y su menú de comandos. La [activación oficial](https://learn.chatgpt.com/use-cases/follow-goals#introduction) señala `features.goals` en `config.toml` o `codex features enable goals`, pero actualizar el CLI no demuestra que hayas actualizado la App. Si sigue faltando, conserva el cliente y la versión como parte del diagnóstico.

### ¿Puedo cambiar un objetivo sin empezar otro chat?

Sí. Usa `/goal edit` y después `/goal` para consultar el objetivo revisado, según la [guía actual de comandos](https://learn.chatgpt.com/docs/developer-commands?surface=cli#set-or-view-a-task-goal-with-goal). Revisa las condiciones de aceptación si el cambio modifica lo que cuenta como terminado.

### ¿`/goal` sustituye a `/plan`?

Cumplen funciones distintas. Planificar ayuda a decidir y ordenar los pasos; un objetivo mantiene el resultado a perseguir durante el trabajo. Si no puedes explicar cómo reconocer el resultado final, aclara primero el encargo. El [Cookbook](https://developers.openai.com/cookbook/examples/codex/using_goals_in_codex) reserva Goals para objetivos verificables cuya ejecución puede requerir varios turnos.

### ¿Puedo dejarlo trabajando toda la noche?

Puede continuar entre turnos dentro de las condiciones descritas por el [Cookbook](https://developers.openai.com/cookbook/examples/codex/using_goals_in_codex), pero no hay aquí una garantía de duración, funcionamiento con el ordenador apagado ni finalización. Antes de dejarlo sin supervisión, define alcance, pruebas y qué debe informar si se bloquea o agota el presupuesto.

### ¿El presupuesto de tokens es un límite de gasto en euros?

No puedes asumir esa equivalencia. El presupuesto del objetivo delimita trabajo y la documentación de [app-server](https://learn.chatgpt.com/docs/app-server#manage-a-thread-goal) expone su contabilidad en tokens y tiempo. No demuestra un precio exacto ni convierte una frase del objetivo en un tope de facturación.

## Fuentes

Páginas externas que cita esta guía, en el orden en que aparecen. Última actualización: 2026-10-08.

- [guía oficial de comandos](https://learn.chatgpt.com/docs/developer-commands?surface=cli) (learn.chatgpt.com)
- [guía oficial de activación](https://learn.chatgpt.com/use-cases/follow-goals) (learn.chatgpt.com)
- [Cookbook de OpenAI](https://developers.openai.com/cookbook/examples/codex/using_goals_in_codex) (developers.openai.com)
- [documentación de app-server](https://learn.chatgpt.com/docs/app-server) (learn.chatgpt.com)
