Codex Update: Chronicle Lets Codex Remember Your Screen Content

Codex Update: Chronicle Lets Codex Remember Your Screen Content

Codex Update: Chronicle Lets Codex Remember Your Screen Content


In an early morning update, OpenAI has rolled out Chronicle, a new capability for Codex that allows it to operate using real‑time content from your screen.

Codex now gains an additional memory source: your screen.

When conversing with Codex, you no longer need to repeatedly clarify what “this” or “that” refers to. It understands what you are currently viewing, recent error messages, and even the projects you were working on weeks ago.

Chronicle builds upon the previously previewed Memories feature, which draws context from chat history. With Chronicle, Codex further incorporates on-screen visual context.

The feature is currently available exclusively for ChatGPT Pro users on macOS, and is temporarily inaccessible in the European Union, United Kingdom, and Switzerland. It is provided as an opt-in research preview.

Scenario 1: Direct On-Screen Debugging


In one official demo titled Use what’s on screen:

A CI failure log is visible on the left side of the screen. The user simply asks Codex:

“Why is this failing?”

Without requiring the user to paste logs or specify the repository, Codex uses Chronicle to capture on-screen context and autonomously diagnoses the issue in 1 minute and 43 seconds.
By analyzing the CI log directly from the screen, Codex automatically identified the specific job, file, and line number.

It pinpointed the issue in the GitHub Actions build-preview job, specifically at line 2 of src/pages/preview-build-fixture.astro:
const articleCount: string = 404;
Codex detected a TS2322 type error: the value 404 is a number, but was explicitly declared as a string.

It also recognized that the PR title mentioned exercise CI failure handling, indicating this type error was intentionally included as a test fixture.

At the bottom of its response, Codex cited 1 memory reference, using context from the repo-specific validation loop on line 2122 of MEMORY.md to support its local reproduction.

OpenAI also included a side-by-side screenshot with Chronicle disabled.

When asked the same question “why is this failing”, Codex simply replied:

“I do not know what this refers to yet.”

With Chronicle turned off, Codex will ask you to provide the specific error text or a link.

Scenario 2: Screen Context Completes "this / that"


The second scenario is called Fill in missing context.

The user enters:

Sync with the latest docs draft changes and message Romain

The user does not specify which document draft latest docs draft refers to, nor who Romain is.
Codex first checked its memory and confirmed that the user usually stores drafts in Google Drive.

It then directly invoked the Google Drive tool to create a document titled Chronicle Launch Copy [DRAFT].

A permission confirmation dialog appeared during the process.

In the comparison version with Chronicle disabled,

Codex asks for clarification on the desired format:

“What format should this be? I can draft it here, create a Google Doc, or prepare a Slack post.”
Without Chronicle’s memory, Codex has no idea where to place the launch communications.

In OpenAI’s own explanation:

Codex first uses Chronicle to identify the source, and when actual work is needed, it reads from relevant files, Slack threads, Google Docs, dashboards, or pull requests.

How to Enable


Beyond the aforementioned restrictions of ChatGPT Pro and macOS, you must also grant Screen Recording and Accessibility permissions.

Steps to Enable:


  1. Open Codex Settings
  2. Go to Personalization and ensure Memories is enabled
  3. Toggle on Chronicle under Memories
  4. Click Continue in the confirmation dialog
  5. When macOS requests permissions, grant Screen Recording and Accessibility

You can Pause or Resume at any time via the menu bar icon.

It is recommended to pause before meetings or when viewing sensitive content.

Technical Details


Screenshots are stored in $TMPDIR/chronicle/screen_recording/

and automatically deleted by Chronicle after 6 hours.

Generated memories are stored in:

$CODEX_HOME/memories_extensions/chronicle/

which defaults to:

~/.codex/memories_extensions/chronicle/

Memories are stored as unencrypted Markdown files, which users can view, edit, and delete.

OpenAI advises against manually adding new entries, but local edits and deletions are supported.

The model used to generate memories matches Codex’s default model.

To use a different one, set it in config.toml:

toml
[memories]
consolidation_model = "gpt-5.4-mini"


Codex does not generate memories immediately.

It skips active sessions, filters sensitive information such as API keys,

and writes to memory in the background only after the thread has been idle for a period.

Risks and Costs


The official documentation lists three key risks:

  1. Rate limits

    The sandboxed agent running in the background for Chronicle consumes quota continuously.

    In OpenAI’s own words: it uses rate limits quickly.

  2. Prompt injection

    If a webpage on the screen contains malicious agent instructions,

    Codex may follow those on-screen commands.

  3. Data visibility

    Memory files are unencrypted and can be read by other applications on the same machine.


Chronicle does not access the microphone or system audio — only screenshots.

OpenAI specifically warns against using Chronicle to record meetings without the consent of others.

When Chronicle generates memories, selected screenshots, OCR text, timestamps,

and local file paths are sent to OpenAI servers for processing.

After processing, screenshots are not retained or used for training.

Why This Is Only a Research Preview


The official blog states:

Going forward, OpenAI is developing Codex into a more capable tool for builders beyond software engineers, and Chronicle is one step toward that goal.

In OpenAI’s own words on X:

while we learn where it helps most and improve the experience.

For this reason, the current release is opt-in.

Interested Pro users can enable it manually in Settings.




Back to blog

Leave a comment