[Windows] Pet overlay ignores “Reduce motion: Off” when OS animation effects are disabled

Open 💬 3 comments Opened Jul 7, 2026 by Natsuaki-forever

Summary

The Windows pet overlay does not honor the Codex per-app Reduce motion: Off setting when Windows Animation effects are disabled. All pet animations are reduced to a single static frame until Windows global animation effects are enabled.

Environment

  • Codex Windows app: 26.623.19656.0
  • Windows: version 25H2, build 26200.8655, x64
  • Native Windows agent
  • Codex setting: reduced-motion-preference = "off"

Steps to reproduce

  1. In Windows Accessibility > Visual effects, disable Animation effects.
  2. In Codex Settings > General > Appearance, set Reduce motion to Off rather than System.
  3. Fully quit and restart Codex.
  4. Wake a built-in pet.
  5. Observe its idle state and drag it horizontally.
  6. Repeat with a custom pet containing valid multi-frame idle and running-left/running-right rows.

Expected behavior

The explicit Codex setting Reduce motion: Off should override the Windows system preference for the Codex UI and pet overlay. Idle and directional drag animations should play normally.

Actual behavior

  • Idle animation is frozen on one frame.
  • Dragging changes to the appropriate directional state, but only a fixed frame is displayed.
  • The behavior affects both built-in and custom pets.
  • Restarting Codex and recreating the overlay does not help.

Control test / workaround

Enabling Windows Animation effects immediately restores idle and drag animations. This indicates that the pet overlay is still following the OS prefers-reduced-motion value despite the Codex per-app preference being explicitly set to off.

Additional notes

The custom pet atlas was separately validated and its animation previews play correctly, so this is not caused by missing sprite frames or custom pet packaging.

View original on GitHub ↗

3 Comments

Photosounder · 1 month ago

I have this too.

CCChair · 1 month ago

I can independently reproduce this on a second Windows installation.

Environment

  • Codex desktop app (Microsoft Store package): 26.707.9564.0
  • Windows 11 25H2, build 26200.8737, x64
  • Codex config persists:

``toml
[desktop]
reduced-motion-preference = "off"
``

Reproduction result

  1. Disable Windows Settings > Accessibility > Visual effects > Animation effects.
  2. Set Codex > Settings > General > Appearance > Reduce motion to Off.
  3. Fully quit and restart Codex.
  4. Wake the floating pet and test both a built-in pet and a custom multi-frame pet.

Both pets remain frozen on the first frame, including hover reactions. Enabling Windows Animation effects makes the animations work, while the Codex setting remains unchanged.

This confirms the issue is not specific to a custom spritesheet and still reproduces in Codex 26.707.9564.0. The floating pet overlay appears to use the Windows reduced-motion state instead of the effective Codex per-app override.

Linchen-Xu · 1 month ago

I encountered the same issue and worked around it locally on Windows by launching Codex with a per-process Chromium flag. If you would like a temporary workaround while waiting for an official fix, paste the prompt below into Codex. It will diagnose your setup, create a reversible Start Menu shortcut, and guide you through verification. After setup, you will need to launch Codex using the new “Codex (Pet Animation)” shortcut instead of the normal entry point.

Diagnose and repair the Codex Desktop pet animation issue on this Windows computer.

Known symptoms:
- Reduce motion is set to Off in Codex;
- Windows Animation effects are disabled;
- both built-in pets and valid custom multi-frame pets remain on a single frame;
- dragging selects the corresponding direction, but the action is still static;
- in known affected builds, the pet component may read the system prefers-reduced-motion value directly instead of using Codex's resolved off/on/system application preference.

Goal:
Without enabling Windows global animations, changing pet assets, or modifying the signed Codex installation, apply --force-prefers-no-reduced-motion only to the Codex process so idle, hover, and drag animations work again. The repair must be idempotent, verifiable, reversible, and refreshable after Codex updates.

Permissions and boundaries:
1. Perform only local, reversible diagnostics and file changes.
2. Do not modify Windows Animation effects, MinAnimate, SPI_GETCLIENTAREAANIMATION, or related registry values.
3. Do not modify reduced-motion-preference or the selected pet in config.toml; read and report them only.
4. Do not modify, unpack and overwrite, re-sign, or repackage Codex files or app.asar under WindowsApps. Do not change WindowsApps ownership or ACLs.
5. Do not delete, overwrite, or regenerate any pet assets.
6. Do not force-terminate Codex processes. If exit is required, attempt graceful shutdown only; on timeout, stop and ask the user to close Codex manually.
7. Do not create, modify, or comment on issues, commits, branches, forks, pull requests, releases, or code in GitHub or any other external system. Do not push. For any useful external change, produce only a plan, diff, or comment draft for the user to apply.
8. Do not install third-party software or download unverified executables. Prefer built-in Windows PowerShell, WMI/CIM, COM, and .NET facilities.
9. If the system is not Windows, the official Codex Desktop app is not installed, or the installation cannot be located reliably, stop and report the condition instead of guessing a path.

Start with a read-only preflight:
1. Use Get-AppxPackage -Name OpenAI.Codex to locate the highest-version installed package and confirm that <InstallLocation>\app\ChatGPT.exe exists. If AppX lookup is unavailable, use a read-only fallback based on a running ChatGPT.exe process whose path matches OpenAI.Codex_*.
2. Identify Codex main processes as ChatGPT.exe processes whose command line does not contain --type=.
3. Read the main-process command line and check whether --force-prefers-no-reduced-motion is already present.
4. Read the Windows client-area animation state with SPI_GETCLIENTAREAANIMATION and read HKCU\Control Panel\Desktop\WindowMetrics\MinAnimate without modifying either value.
5. Read reduced-motion-preference from CODEX_HOME or %USERPROFILE%\.codex\config.toml without modifying it.
6. Confirm the currently visible pet. When using UI Automation, the pet may be a Group whose name ends in " pet", not necessarily an Image; do not search only for Image controls.
7. If the pet already displays multiple animated frames after a normal Codex launch, or the current main process already has the required switch, do not reinstall the repair. Report a no-op with evidence.
8. If reduced-motion-preference is not off, do not edit the config directly. Ask the user to set it to Off through the Codex settings UI before continuing the reproduction.
9. Do not disable Windows Animation effects merely to reproduce the bug. If system animations are currently enabled, state that the bug cannot be reproduced without changing the user's setting, provide the installation plan only, and do not claim runtime validation.

Repair implementation:
1. Create an English-code, English-output PowerShell script named launch_codex_with_pet_animation.ps1 under %LOCALAPPDATA%\CodexPetAnimation\.
2. The script must enable Set-StrictMode -Version Latest and $ErrorActionPreference = "Stop".
3. On every run, the script must dynamically discover the latest OpenAI.Codex AppX/MSIX installation and must not hard-code a package version.
4. The script must provide at least these modes:
   - -TestOnly: emit read-only diagnostic JSON without launching, closing, or modifying anything;
   - -InstallShortcut: install or refresh the Start Menu shortcut;
   - -RemoveShortcut: remove only the shortcut created by this repair;
   - default execution: launch Codex with --force-prefers-no-reduced-motion;
   - optional -Restart: gracefully close an existing Codex instance only; never force-kill it after a timeout.
5. The only launch argument added must be --force-prefers-no-reduced-motion. Do not add unrelated Chromium switches.
6. Create a Start Menu shortcut named "Codex (Pet Animation)" under %APPDATA%\Microsoft\Windows\Start Menu\Programs:
   - TargetPath points to ChatGPT.exe in the latest Codex installation;
   - Arguments is --force-prefers-no-reduced-motion;
   - WorkingDirectory is the directory containing ChatGPT.exe;
   - IconLocation uses ChatGPT.exe;
   - repeated -InstallShortcut runs may safely replace only this repair's shortcut with the same name.
7. Record timestamp, status, Codex version/path, launch argument, Windows animation readings, Codex preference reading, and verification result in %LOCALAPPDATA%\CodexPetAnimation\launch-history.jsonl. Do not log conversation content, secrets, or personal file contents.
8. The script must emit clear errors. A failed step must never be recorded as success.
9. After saving the script, run a PowerShell AST syntax check, then -TestOnly, then -InstallShortcut, and read back the shortcut's TargetPath, Arguments, WorkingDirectory, and IconLocation.

Restart handoff:
1. Do not restart and interrupt the same Codex task that creates the repair.
2. After the script, syntax check, TestOnly run, and shortcut installation are complete, clearly instruct the user to:
   - exit Codex normally;
   - launch "Codex (Pet Animation)" from the Start Menu;
   - return to the same task and reply "continue verification".
3. After the user returns, first confirm that the new Codex main-process command line actually contains --force-prefers-no-reduced-motion. Shortcut configuration alone is not runtime proof.
4. Read the Windows animation state again and confirm that the repair did not change the system setting.

Runtime acceptance:
1. Prefer a built-in pet as a control, then test the current custom pet. Do not modify or repackage either atlas.
2. Idle test:
   - move the pointer away from the pet;
   - capture only the pet bounding rectangle about every 250 ms for 12 seconds, for 48 frames total;
   - calculate SHA-256 for every frame;
   - uniqueHashes must be greater than 1, and visual inspection must confirm that the difference comes from character or companion pose, blinking, or breathing rather than pointer movement, scrolling, or background changes.
3. Hover test:
   - move the pointer from outside into the center of the pet;
   - capture about every 150 ms for at least 4.8 seconds;
   - require multiple distinct frames and visually confirm a continuous preparation, crouch, lift, or landing sequence.
4. Drag test:
   - record the original pet position;
   - press and drag a short distance continuously to the left or right, capturing the pet's moving bounding rectangle about every 120 ms;
   - require multiple gait frames and a repeating frame-hash sequence; do not treat background movement alone as success;
   - release and return the pet to within 2 px of its original position. If the position cannot be restored safely, stop further dragging.
5. If UI Automation or screenshot capture is unavailable, mark verification as partial and request visual confirmation from the user. Do not claim a full pass.
6. Success requires all of the following:
   - the running main process contains the required switch;
   - Windows global animation values are unchanged;
   - idle contains at least two real animation frames;
   - hover and drag each contain at least two real action frames;
   - the selected pet and config.toml were not rewritten.

Update and rollback:
1. After a Codex update, if the shortcut target is missing or still points to an older package, rerun -InstallShortcut so the script rediscovers the latest installation and refreshes the shortcut.
2. To roll back, run -RemoveShortcut and then delete %LOCALAPPDATA%\CodexPetAnimation\. Do not delete Codex, local pets, or config.toml.
3. After rollback, launch Codex from its normal entry point to restore the original behavior.

Final handoff:
1. Lead with the outcome, not only the process.
2. Report preflight facts, local files created or changed, shortcut readback, live process arguments, unique-frame counts, evidence that system settings were unchanged, update instructions, and rollback instructions.
3. Mark each item as confirmed, partial, or blocked. Do not treat static configuration as runtime proof.
4. If a newer Codex build already fixes the issue at source level, remain a no-op and explain that the compatibility launch switch is no longer needed.