Por qué Codex sigue sin recordar lo que esperas
Las memorias están desactivadas hasta que las actives, en uno de dos lugares
La documentación lo dice claramente: "Las memorias locales de Codex están desactivadas por defecto".
Hay dos formas de activarlas. En la aplicación de escritorio de ChatGPT, abre Settings > Personalization y activa Enable memories. Para una configuración basada en archivos, añade la bandera de función a config.toml:
[features]
memories = trueSi usas Codex en la aplicación de escritorio, la CLI y la extensión de IDE, ten en cuenta que la extensión de IDE "utiliza el almacenamiento de memoria local del host de Codex conectado"; no mantiene uno propio. Actívalo en el host y la extensión lo seguirá.
Una distinción más que confunde a la gente: ChatGPT en la web es un sistema independiente. "ChatGPT web utiliza la memoria de ChatGPT, mientras que los clientes locales de Codex utilizan un almacenamiento y controles de memoria local independientes". Y ChatGPT Work "no utiliza un almacenamiento de memoria local de Codex ni controles de memoria local" en absoluto. Activar uno no activa el otro.
Las escrituras se aplazan y se pueden omitir
Incluso con las memorias activadas, no aparece nada en el momento en que termina un chat. "Es posible que las memorias no se actualicen de inmediato cuando finaliza un chat. Codex espera hasta que un chat haya estado inactivo el tiempo suficiente para evitar resumir el trabajo que aún está en curso". Codex también "omite las sesiones activas o de corta duración".
Ese es un diseño razonable y produce un primer día confuso: activas la función, terminas una sesión, buscas una memoria y no encuentras nada.
La arista que más importa es más silenciosa. "La generación de memoria también puede omitir un paso en segundo plano cuando el porcentaje restante de tu límite de tasa de Codex está por debajo del umbral configurado, de modo que Codex no gaste cuota cuando estés cerca de un límite".
Lee eso en términos de cuándo se activa. Las sesiones con más probabilidades de ser omitidas son las largas, densas y difíciles al final de un día pesado; exactamente las sesiones que más vale la pena recordar. El umbral es configurable a través de memories.min_rate_limit_remaining_percent, pero el comportamiento por defecto es que tu trabajo más activo es el que tiene menos probabilidades de ser registrado.
Lo que escribe es un estado generado, y se te indica que no lo edites
El almacenamiento reside bajo tu directorio de inicio de Codex, ~/.codex por defecto, y "Los archivos de memoria principales residen bajo ~/.codex/memories/ e incluyen resúmenes, entradas duraderas, entradas recientes y evidencia de respaldo de chats anteriores".
Luego, la instrucción que define el rol de toda la función: "Trata estos archivos como estado generado. Puedes inspeccionarlos al solucionar problemas o antes de compartir tu directorio de inicio de Codex, pero no dependas de editarlos a mano como tu superficie de control principal".
Así que es inspeccionable pero no de autoría manual. Puedes leerlo para descubrir por qué Codex cree algo; no puedes mantenerlo como el registro canónico de cómo funciona tu proyecto. Ese es un límite deliberado, y es el mismo límite que la documentación vuelve a trazar unas líneas más adelante.
El contexto externo se puede excluir por completo de la generación de memoria
Esta es la clave más interesante del conjunto. memories.disable_on_external_context, "cuando es true, mantiene los chats que utilizaron contexto externo, como llamadas a herramientas MCP, búsqueda web o búsqueda de herramientas, fuera de la generación de memoria". Una clave más antigua, memories.no_memories_if_mcp_or_web_search, todavía se acepta como alias.
Que un proveedor ofrezca un interruptor que mantenga las sesiones influenciadas externamente fuera del almacenamiento de memoria es una señal significativa sobre cómo fallan estos sistemas. El contenido que un agente obtuvo de otro lugar es una ruta plausible hacia la memoria duradera, y OpenAI te dio una manera de cerrarla.
Sin embargo, la compensación es real. Actívalo y tus sesiones de investigación intensiva —a menudo las que contienen la información genuinamente más nueva— dejarán de aportar. Desactívalo y cualquier cosa que lea un agente puede influir en lo que recuerda.
El resto de las claves, brevemente
Vale la pena conocer cuatro más. memories.generate_memories "controla si los chats recién creados se pueden almacenar como entradas de generación de memoria". memories.use_memories "controla si Codex inyecta memorias existentes en futuras sesiones" — las dos direcciones son independientes, por lo que puedes leer sin escribir o escribir sin leer. Y memories.extract_model y memories.consolidation_model anulan los modelos utilizados para la extracción por chat y la consolidación global, respectivamente.
Por chat, /memories en la aplicación de escritorio y la TUI de Codex controla si ese chat puede usar memorias existentes y si puede alimentar las futuras. "Las elecciones a nivel de chat no cambian tu configuración global de memoria".
Lo que la gente intenta
Concluir que Codex no tiene memoria. Comprensible y, dado que el almacenamiento está desactivado por defecto, el error más común. Comprueba primero Settings > Personalization.
Escribir todo en AGENTS.md. Esto funciona, y la documentación lo recomienda activamente para una categoría específica, pero un archivo de instrucciones en constante crecimiento compite por el contexto en cada solicitud, y no es la estructura adecuada para el razonamiento.
Editar a mano ~/.codex/memories/. Desaconsejado explícitamente: estos son archivos generados, y los pasos de consolidación de Codex son los que los mantienen. Tus ediciones no son la superficie de control.
Activar las memorias y asumir que ya está resuelto. Las escrituras aplazadas y las omisiones por límite de tasa significan que la cobertura es fragmentada por diseño. Nada garantiza que una sesión de terminada haya dejado rastro.
Activar disable_on_external_context y olvidarlo. Un valor predeterminado seguro que excluye silenciosamente tus sesiones con mayor densidad de información.
Pegar el contexto al inicio de cada sesión. Fiable, manual y funciona hasta el día en que lo olvidas.
La solución: separar lo que debe mantenerse de lo que es bueno recordar
La documentación te ofrece la división, y vale la pena citarla por completo porque es la declaración más clara que cualquier proveedor ha publicado sobre esto:
"Mantén la guía requerida del equipo en AGENTS.md o en la documentación registrada. Trata las memorias como una capa de recuerdo útil, no como la única fuente para las reglas que siempre deben aplicarse".
Tres niveles, entonces. Las reglas que deben cumplirse siempre van en AGENTS.md o en la documentación registrada. El recuerdo por conveniencia —tus preferencias, cómo te gusta que se estructure la salida— es para lo que sirve el almacenamiento local, y dejar que funcione automáticamente es el objetivo. Entre ambos se encuentra todo lo duradero que no es ni una instrucción ni algo simplemente deseable: las decisiones y sus razones, los enfoques descartados, las restricciones que hacen que la respuesta obvia sea incorrecta. Ese nivel no puede residir en un almacenamiento que omite un paso cuando estás cerca de un límite de tasa, y no debería residir en un archivo de instrucciones que se carga en cada solicitud.
Esa es la capa que mantiene MemoryLake: conocimiento duradero del proyecto que tus herramientas consultan deliberadamente, de modo que AGENTS.md se mantiene corto y el almacenamiento local sigue siendo una conveniencia. La configuración consta de tres pasos.
Paso 1: Crear una clave API
Inicia sesión y crea una clave API. Una sola credencial para todas las herramientas que conectes.

Paso 2: Sube tus primeras memorias
Entradas cortas, una afirmación cada una. La prueba útil es si perderla te costaría una discusión en lugar de una pulsación de tecla:

Decision con sus razones. "Agrupamos las escrituras porque el grupo de conexiones se satura a las 200 concurrentes". La regla puede ir en AGENTS.md; la razón es lo que evita que se revierta el próximo trimestre.
Enfoques ya descartados. La categoría que no aparece en ningún archivo de instrucciones ni en ningún mensaje de confirmación (commit), y que vuelve a ser propuesta en cada nueva sesión.
Hechos del entorno que nadie anuncia. El límite de tasa no documentado, la dependencia de ordenación, la prueba que solo falla en CI.
Cualquier cosa que odiarías perder por un paso omitido. Si importa y la cobertura del almacenamiento local es de mejor esfuerzo (best-effort), no dependas del mejor esfuerzo.
Paso 3: Conecta tu IA y agentes
Conecta lo que uses. MemoryLake es accesible a través de MCP y de una API, y Codex es compatible con servidores MCP; vale la pena señalar que si mantienes memories.disable_on_external_context establecido en true, las sesiones que utilizan herramientas MCP dejarán de aportar a las propias memorias locales de Codex. Esa es una razón para ser deliberado sobre qué almacenamiento guarda qué, no una razón para evitar ninguno de los dos.

Tres límites honestos. MemoryLake no lee, escribe ni elimina ~/.codex/memories/ — ese es un estado generado que mantiene OpenAI, y ninguna herramienta externa debería editarlo. No escribe tu AGENTS.md, que sigue siendo la forma en que diriges a Codex. Y nada llega a la memoria a menos que tú o tus agentes lo pongan allí, por lo que el Paso 2 es deliberado.
Qué cambia esto en la práctica
"¿Recuerda Codex?" obtiene una respuesta real. Sí, una vez activado, y ya sabes dónde están los archivos.
Un paso en segundo plano omitido deja de costarte algo importante. El nivel duradero no está en el almacenamiento que realiza omisiones.
AGENTS.md deja de crecer. Las instrucciones siguen siendo instrucciones; el razonamiento se traslada fuera.
Puedes inspeccionar sin editar. Lee ~/.codex/memories/ para comprender una creencia, cambia la capa duradera para corregirla.
Las sesiones de investigación intensiva siguen siendo seguras de ejecutar. Excluir el contexto externo del propio almacenamiento de Codex te cuesta menos cuando las conclusiones importantes se escribieron a propósito.
Buenas prácticas para las memorias locales de Codex
Actívalas explícitamente y comprueba la superficie que realmente utilizas. Desactivadas por defecto; la extensión de IDE sigue a su host; ChatGPT web es un sistema independiente.
Decide disable_on_external_context deliberadamente. Cierra una ruta real hacia la memoria y excluye tus sesiones con mayor densidad de información. Elige a sabiendas.
No pongas secretos en las memorias. La documentación es directa: "No guardes secretos en las memorias". Codex redacta los secretos de los campos generados, pero revisa los archivos antes de compartir tu directorio de inicio de Codex.
Lee los archivos antes de concluir que la función falla. La inspección está admitida; la edición a mano como superficie de control, no.
Mantén la guía requerida en AGENTS.md. Es el propio consejo del proveedor, y el almacenamiento local no lo sustituye.
Separa la lectura de la escritura. use_memories y generate_memories son claves independientes, lo cual es útil en trabajos compartidos o sensibles.
Audita lo acumulado periódicamente. La práctica general se encuentra en cómo auditar lo que tu IA recuerda.
Mantén pequeña la capa duradera. Más entradas no es mejor; el argumento se encuentra en por qué la memoria de los agentes debería conservar menos.
Conclusión
Codex recuerda más de lo que la mayoría de sus usuarios piensa, y menos de lo que implica la palabra "memoria". Existe un almacenamiento local documentado en ~/.codex/memories/ que contiene resúmenes, entradas duraderas, entradas recientes y evidencia de respaldo; desactivado por defecto, se activa desde Settings > Personalization o mediante una bandera de función en config.toml, con control por chat a través de /memories y media docena de claves de configuración detrás.
Su cobertura es deliberadamente de mejor esfuerzo (best-effort). Las escrituras esperan hasta que un chat haya estado inactivo, las sesiones cortas se omiten y un paso en segundo plano se puede omitir por completo cuando tu límite de tasa restante está por debajo del umbral configurado. Los archivos son un estado generado que se te indica que inspecciones pero no que edites a mano. Y disable_on_external_context mantendrá cualquier sesión que haya tocado MCP o la búsqueda web completamente fuera de la generación de memoria, lo cual es un control genuinamente bueno y una exclusión genuinamente grande.
Nada de eso es un fallo; es un alcance. La propia documentación define el alcance: mantén la guía requerida en AGENTS.md o en la documentación registrada, y trata las memorias como una capa de recuerdo útil en lugar de la única fuente para las reglas que siempre deben aplicarse. Activa el almacenamiento, deja que se encargue de la conveniencia y coloca las decisiones sobre las que discutirías en algo que no omita un paso cuando estés ocupado. La razón más amplia por la que el contexto por sí solo no resuelve esto se encuentra en por qué el contexto largo no es memoria.