Skip to content

Windows Codex desktop: Send button spins forever and prompts never submit #40968

Open

Description

@BenzighemHoussam09

What version of the Codex App are you using (From “About Codex” dialog)?

26.820.7780.0

What subscription do you have?

pro x5

What platform is your computer?

Windows 11, build 26200.0, x64

What issue are you seeing?

In the ChatGPT desktop app with Codex, sending a follow-up prompt in an existing thread stops at the UI spinner: the message never appears in the conversation and no task begins. The Send arrow becomes visibly dimmer/less bright when clicked, then remains in the spinner state indefinitely.

Creating a brand-new thread and sending its initial prompt works normally in the desktop app. The failure begins with later messages/replies in that same thread.

The local Codex service can still list and read existing threads, and codex login status reports “Logged in using ChatGPT”. However, after clicking Send there is no task-start event in the desktop logs, suggesting the renderer/UI is failing before prompt submission.

I did not find a Windows application crash event or a missing-skill/configuration error.

What steps can reproduce the bug?

Feedback ID: 01a03bb1-9d14-7b10-8669-0aa1f1592531

What is the expected behavior?

The prompt should be submitted promptly, appear in the thread, and start the requested Codex task. If submission fails, the app should show a clear, actionable error rather than an indefinite spinner.

Additional information

The problem also started after the latest Codex desktop-app update, so it may be update-related. It also began around the time I removed disabled third-party Caveman and Spec Kit skill installations; that is only a timing correlation, because the removals completed cleanly and no remaining missing-skill or configuration error was found.

The key contrast: I can still send messages to these threads from the ChatGPT Remote/mobile functionality. The failure is limited to submitting messages from the Windows desktop Codex UI.

I can provide a short screen recording and sanitized diagnostic logs if needed. Please advise on a safe profile/renderer reset that does not require closing the desktop app while I am connected only through ChatGPT Remote on mobile.

Activity

  1. added
    bugSomething isn't working
    windows-osIssues related to Codex on Windows systems
    sessionIssues involving session (thread) management, resuming, forking, naming, archiving
    on Aug 26, 2026
  2. W1II1am commented on Aug 26, 2026

    @W1II1am

    I am reproducing what appears to be the same issue on a newer Windows desktop build, 26.826.11250.

    A new conversation accepts the first prompt normally. After the first response completes, typing a second prompt does not activate the Send arrow; it remains gray. Clicking it changes it to a spinner, but the message is not submitted. Existing conversations also open in this non-sendable state.

    This affects both ChatGPT and Codex in the Windows desktop app. The same account/conversations work normally at chatgpt.com.

    I have already tried app Repair, Reset, complete process termination, and logout/login.

    Feedback ID: no-active-thread-01a04024-82a2-7452-b0ec-5c8ef68ff78c

  3. SergioFernandez1984 commented on Aug 27, 2026

    @SergioFernandez1984

    I’m experiencing a very similar issue on Windows, but in my case it only happens when Codex Desktop is connected to remote Linux VPS hosts over SSH.

    The issue affects two separate VPS hosts. New conversations may work initially, but existing conversations can become extremely slow, fail to display their content, or leave a submitted prompt spinning without starting the task. The behavior is intermittent: it may recover temporarily and then fail again.

    Codex CLI works normally when run directly on either VPS, including moderately complex tasks. The VPS resources are healthy, and the remote app-server and proxy appear to be connected normally. This seems specific to the Windows Codex Desktop ↔ SSH remote app-server path rather than the VPS hosts themselves.

    I have already repaired and updated the Windows app, restarted it completely, and run the Codex dependency diagnostics, which reported no problems.

  4. gadam76mdth commented on Aug 27, 2026

    @gadam76mdth

    I can confirm what appears to be the same issue on Windows.

    Environment:

    • Windows 11 Pro x64
    • OpenAI.Codex 26.820.9563.0
    • Codex & OWL 26.820.71523

    In my case, existing conversations stop accepting new prompts: I can type normally and the Send button remains visible, but clicking it does nothing.

    An important additional observation: creating a fresh Work conversation only fixes the problem temporarily. The new conversation works normally at first, but after some usage it eventually develops the exact same Send failure.

    Troubleshooting performed:

    • Logout/login — no change
    • Windows App Repair — no permanent change
    • Regenerable Codex cache/temp state cleared — no permanent change
    • .agents ownership verified — owner correctly matches the current Windows user, not CodexSandboxOffline
    • Complete uninstall and reinstall of Codex — no change

    The issue started immediately after the recent update.

    This makes it look like a runtime/app-state regression rather than corruption of individual old threads or a local installation problem.

    I have also opened a separate issue with more detailed diagnostics, but wanted to confirm here that #40968 appears closely related to what I am experiencing.

  5. DilerFeed commented on Aug 27, 2026

    @DilerFeed

    Same problem here. The app is unusable. No solution has been found to fix it.

  6. jci731 commented on Aug 27, 2026

    @jci731

    Same problem. The desktop app is completely unusable.

  7. yanzdan commented on Aug 27, 2026

    @yanzdan

    Same problem from 2026-08-26

  8. jci731 commented on Aug 27, 2026

    @jci731

    I was able to revert back to a working version by downloading the official OpenAI CDN URL for Codex Desktop 26.810.7004.0 at https://persistent.oaistatic.com/codex-app-prod/releases/26.810.7004.0/ChatGPT-x64.msix?utm_source=chatgpt.com. I then used powershell to remove the updated version and install this one. I am able to use the program again.

  9. BenzighemHoussam09 commented on Aug 27, 2026

    @BenzighemHoussam09
    Author

    @jci731 Thank you — the rollback to 26.810.7004.0 is working for me too. I received two updates today, but neither fixed the issue, so I’ll stay on the working version while waiting for an official fix.

  10. abdrhxyii commented on Aug 28, 2026

    @abdrhxyii

    I have this exact same issue. I want in 26.820.9563.0. so, i reverted back to older codex version. Fix this serious issue. The codex is comletely unusable in the latest version 26.820.9563.0.

  11. yanzdan commented on Aug 28, 2026

    @yanzdan

    Just updated from MS Store. Looks like fixed in 26.825.3734.0

  12. 32 remaining items

  13. deshazer commented on Sep 19, 2026

    @deshazer

    I was experiencing the exact same issue. I was able to get a local Codex CLI chat to resolve the issue enough to be able to continue using the desktop app for now (so I can keep working). Time will tell if the fix was temporary or not. It says that feeding this prompt to another locally running Codex agent would also resolve the problem (as long as the root cause is the same for everyone). I'm copy/pasting it here in case it helps identify and resolve the root problem (and to hopefully get some other people back to work). Steps 3-5 were the heart of the issue on my machine. 🤷‍♂️

    Help recover the Windows Codex desktop app’s follow-up message submission.
    
    Symptoms:
    - The initial message in a new task can work.
    - Follow-up messages remain in the composer with an indefinite spinner.
    - Switching tasks can clear the spinner without submitting the message.
    - CLI or mobile Remote may still submit successfully.
    
    A reported failure involves two local configuration queries remaining
    pending indefinitely. Diagnose that exact state before attempting recovery.
    
    1. Discover the actual environment.
    
    Identify the installed desktop version, its running main process, and an
    available Windows Node.js runtime. Discover paths and PIDs on this machine;
    do not assume a username, installation directory, or CODEX_HOME.
    
    The desktop main executable may be ChatGPT.exe inside an OpenAI.Codex
    package. Distinguish it from renderer processes and the Codex app server.
    
    2. Prepare temporary diagnostics with reliable cleanup.
    
    Use a temporary, loopback-only Node inspector on the identified desktop
    main process. Do not restart the app or pause it at startup. Refuse to
    take over an existing diagnostic listener.
    
    On compatible builds, a Windows Node process can activate the inspector
    using process._debugProcess(mainPid). This is an internal interface;
    verify availability and test connection/cleanup against a disposable
    Node process before using it on the desktop.
    
    Verify the attached process PID.
    
    Bare require is unavailable in some desktop main-process contexts.
    Use supported built-in access such as process.getBuiltinModule.
    Resolve cleanup dependencies before scheduling callbacks, and catch
    errors inside asynchronous cleanup callbacks.
    
    3. Inspect the correct renderer.
    
    Enumerate Electron webContents and select exactly one target with:
    - getType() === "window"
    - getURL() === "app://-/index.html"
    
    Exclude embedded browsers, overlays, and detached windows. Stop if the
    target is ambiguous.
    
    Obtain the renderer’s EXISTING TanStack QueryClient by inspecting its
    React providers. Identify it by methods such as getQueryCache,
    cancelQueries, and refetchQueries. Do not create a new QueryClient or
    assume queryClient exists as a console global.
    
    These private interfaces are version-dependent. Stop if they differ.
    
    4. Confirm the precise failure.
    
    Locate these exact query keys:
    
    ["vscode", "codex-home"]
    ["vscode", "codex-home", "{\"hostId\":\"local\"}"]
    
    Both must remain:
    - status: "pending"
    - fetchStatus: "fetching"
    - no data
    - no error
    - dataUpdatedAt: 0
    
    Recheck after a short delay to distinguish a stuck request from normal
    initial loading. If this signature is absent, do not apply this recovery.
    
    5. Retry only those configuration reads.
    
    Capture the two exact query identities before cancellation.
    Cancel those queries first, then refetch those same queries using the
    existing QueryClient.
    
    Invalidation alone may keep waiting for the original unresolved request.
    
    Use bounded waiting, propagate fetch errors, and cancel the targeted
    refetches if they time out. Do not retry turn/start, turn/steer, message
    submission, or unrelated operations.
    
    Do not fabricate query data, force readiness flags, or bypass permissions.
    
    6. Verify the result.
    
    Both queries must become success/idle and contain real directory metadata.
    Record only whether valid metadata exists; avoid exposing private paths.
    
    Confirm the renderer was not reloaded and the visible draft is unchanged.
    If the composer still has a blocking reason, report it instead of widening
    the recovery indiscriminately.
    
    7. Close diagnostics.
    
    Disconnect the inspector and verify that the temporary listening port
    is gone. Do this on success and failure. Do not install a startup hook
    or background recovery process.
    
    8. Validate through the actual desktop composer.
    
    Ask the user to send a harmless follow-up in an existing task and wait
    for its reply, then send a second follow-up after that reply finishes.
    
    Messages sent through CLI, mobile Remote, or an internal thread tool
    do not validate the desktop Send path.
    
    Report separately:
    - whether the exact failure signature was confirmed;
    - whether both configuration reads recovered;
    - whether two normal desktop follow-ups succeeded;
    - whether diagnostic cleanup completed.
    
    Preserve login, configuration, permissions, drafts, conversation history,
    and installed application files throughout.
    
  14. PilotFlying commented on Sep 19, 2026

    @PilotFlying

    I had Claude write up a PowerShell script to automate this, worked well for me (please review, use at your own risk).

    Thanks @rwhepburn !

    Claude:

    Preserved:

    • All conversations and thread history (rollout JSONL files + SQLite databases)
    • Thread-to-project associations (so conversations appear under the correct projects)
    • AI memories, skills, rules, attachments, generated images, visualizations
    • Agent and user configuration

    Reset (the fix):

    • Runtime queue state (followUpQueueMode, queued-follow-ups, electron-initial-follow-up-queue-mode)
    • Caches, locks, logs, WebView/Chromium state
    • Internal databases other than conversations (logs, queue, goals)

    Key findings during development

    The original manual workaround from @rwhepburn correctly identified state_5.sqlite, thread_history_1.sqlite, and the project metadata keys. However, I found that three additional categories of data must also be restored or conversations show up as "no chats" under each project:

    1. The sessions folder — contains the actual conversation content (rollout JSONL files). Without it, the databases reference threads that have no content to display.
    2. Thread-to-project mapping keys in .codex-global-state.json — most critically thread-project-assignments, but also sidebar-project-thread-orders, projectless-thread-ids, thread-workspace-root-hints, thread-writable-roots, thread-projectless-output-directories, and electron-thread-read-state-v1.
    3. session_index.jsonl — the session/thread index file.

    My (the human's) note: I had a chatgpt background process at some point, holding a lock on a . file inside .codex; this is why I had Claude look for it in the script. I am fairly certain the app had been exited. I couldn't replicate so this may be supefluous:
    Additionally, the app can leave hidden background processes running after the main window is closed (not visible in the taskbar or system tray). These hold file locks on files inside .codex and can prevent the backup step from working. The script detects these by scanning process paths for chatgpt, codex, or openai and offers to terminate them.

    How to use

    Requirements: Windows 10/11, PowerShell 5.1+ (ships with Windows) or PowerShell 7+

    1. Close the ChatGPT / Codex desktop app completely.
    2. Save the script below as Repair-CodexProfile.ps1.
    3. Run it:
      powershell -ExecutionPolicy Bypass -File Repair-CodexProfile.ps1
      
      or if you have PowerShell 7:
      pwsh -File Repair-CodexProfile.ps1
      
    4. When prompted, launch the app, log in fully (you must see the main chat interface — don't stop at the login screen), then quit the app.
    5. The script restores your data and merges the safe metadata keys.
    6. Launch the app and verify: open an existing conversation, send a follow-up, send a second follow-up after the reply.

    The script is safe to re-run if the problem recurs. Previous backups are preserved with timestamps rather than overwritten.

    The script

    Click to expand Repair-CodexProfile.ps1
    #Requires -Version 5.1
    <#
    .SYNOPSIS
        Repairs the ChatGPT / Codex Windows desktop app when the Send button
        freezes, spins forever, or stays grayed out on follow-up messages.
    
    .DESCRIPTION
        Since approximately August 2026 (build 26.820.x), a regression in the
        Windows Codex desktop app corrupts local runtime state, causing:
    
          - The Send button spins indefinitely on follow-up messages
          - The composer stays disabled/gray after the first turn completes
          - Existing conversations become completely unusable
          - The web version (chatgpt.com) and mobile app still work fine
    
        The root cause is that two internal configuration queries ("codex-home")
        get stuck in a permanent "pending/fetching" state, which blocks the
        composer from ever enabling after the first turn. Corrupted runtime
        queue state (followUpQueueMode, queued-follow-ups) persists across app
        restarts. Multiple app updates have NOT fixed this — the bug has been
        reported across builds from 26.820.7780.0 through 26.915.3509.0+.
    
        This script performs a SELECTIVE profile reset: it replaces the corrupted
        runtime state with a fresh copy while preserving your conversations,
        projects, skills, and other portable content.
    
        Workaround documented by community members in:
          https://github.com/openai/codex/issues/40968
          https://github.com/openai/codex/issues/40872
          https://github.com/openai/codex/issues/40794
          https://github.com/openai/codex/issues/25779
          https://github.com/openai/codex/issues/24287
    
        What is PRESERVED:
          - All conversation history and threads (rollout JSONL files)
          - Conversation databases (state, thread history)
          - Project associations, thread-to-project mappings, workspace roots
          - AI memories about you
          - Skills, rules, attachments, generated images, visualizations
          - Agent configuration, user config
    
        What is RESET (the fix):
          - Runtime queue state (followUpQueueMode, queued-follow-ups)
          - Caches, locks, logs, WebView/Chromium state
          - Internal SQLite databases other than conversations (logs, queue, goals)
    
        The script is safe to re-run. Your original profile is kept as a backup
        until you manually delete it.
    
    .PARAMETER BackupName
        Name for the backup folder under %USERPROFILE%. Default: .codex-backup
    
    .EXAMPLE
        pwsh -File Repair-CodexProfile.ps1
    
    .EXAMPLE
        powershell -ExecutionPolicy Bypass -File Repair-CodexProfile.ps1
    
    .NOTES
        Requires: Windows 10/11, PowerShell 5.1+ or PowerShell 7+
        The ChatGPT / Codex desktop app must be FULLY CLOSED before running.
        Author: Community workaround — see GitHub issues above.
        License: Public domain / CC0 — use and share freely.
    
    .LINK
        https://github.com/openai/codex/issues/40968
    
    #>
    
    <#
        DISCLAIMER
    
        This script is provided "AS IS", without warranty of any kind, express or
        implied, including but not limited to the warranties of merchantability,
        fitness for a particular purpose, and noninfringement.
    
        In no event shall the authors be liable for any claim, damages, or other
        liability arising from the use of this script.
    
        This is an UNOFFICIAL community workaround, not endorsed by or affiliated
        with OpenAI. It modifies local application data in your user profile.
        While it creates a backup of your existing profile before making changes,
        you are responsible for verifying that backup and for any consequences of
        running this script.
    
        Always review scripts before running them. Use at your own risk.
    #>
    
    [CmdletBinding()]
    param(
        [string]$BackupName = '.codex-backup'
    )
    
    Set-StrictMode -Version Latest
    $ErrorActionPreference = 'Stop'
    
    # ── Paths ──────────────────────────────────────────────────────
    $codexDir        = Join-Path $env:USERPROFILE '.codex'
    $backupDir       = Join-Path $env:USERPROFILE $BackupName
    $globalStateFile = '.codex-global-state.json'
    
    # ── What to restore ───────────────────────────────────────────
    
    # Conversation databases (the main thread/state stores)
    $databasesToRestore = @(
        'state_5.sqlite'
        'state_5.sqlite-shm'
        'state_5.sqlite-wal'
        'thread_history_1.sqlite'
        'thread_history_1.sqlite-shm'
        'thread_history_1.sqlite-wal'
    )
    
    # Folders containing conversation content and portable data
    $foldersToRestore = @(
        'sessions'           # Rollout JSONL files — the actual conversation content
        'archived_sessions'  # Archived conversation content
        'memories'           # AI memories about you
        'skills'             # Installed skills
        'rules'              # Custom rules
        'attachments'        # File attachments
        'generated_images'   # AI-generated images
        'visualizations'     # Saved visualizations
    )
    
    # Individual files to restore
    $filesToRestore = @(
        'session_index.jsonl' # Session/thread index
        'AGENTS.md'           # Agent configuration
        'config.toml'         # User configuration
    )
    
    # Project metadata keys to selectively merge from the old global state
    # into the freshly generated one.
    $keysToMerge = @(
        # Project associations
        'local-projects'
        'project-order'
        'electron-saved-workspace-roots'
        'electron-workspace-root-labels'
        'active-workspace-roots'
        'selected-project'
        'app-server-project-id-by-legacy-project-id-by-host'
        # Thread-to-project mappings (critical — without these, projects show "no chats")
        'thread-project-assignments'
        'sidebar-project-thread-orders'
        'projectless-thread-ids'
        'thread-workspace-root-hints'
        'thread-writable-roots'
        'thread-projectless-output-directories'
        'project-appearances'
        'electron-thread-read-state-v1'
    )
    
    # Keys that must NOT be restored — these hold the corrupted state
    $dangerousKeys = @(
        'queued-follow-ups'
        'followUpQueueMode'
        'electron-initial-follow-up-queue-mode'
    )
    
    # ── Helpers ────────────────────────────────────────────────────
    
    function Get-CodexProcesses {
        <#
            The ChatGPT/Codex app can leave background processes running even after
            the main window is closed and the system tray icon disappears. These
            hold file locks inside .codex and block the repair.
    
            We search by exact name AND by wildcard against the executable path,
            because the background helper may not match the main process name.
        #>
        $found = @()
    
        # Exact name matches (fast)
        foreach ($name in @('ChatGPT', 'Codex', 'CodexAppServer')) {
            $found += @(Get-Process -Name $name -ErrorAction SilentlyContinue)
        }
    
        # Wildcard match against executable path for background helpers
        $found += @(Get-Process -ErrorAction SilentlyContinue |
            Where-Object {
                $_.Path -and (
                    $_.Path -match '(?i)chatgpt|codex|openai'
                ) -and $_.Id -notin $found.Id
            })
    
        return $found
    }
    
    function Test-CodexRunning {
        return @(Get-CodexProcesses).Count -gt 0
    }
    
    function Stop-CodexProcesses {
        $procs = @(Get-CodexProcesses)
        if ($procs.Count -eq 0) { return $true }
    
        Write-Host ""
        Write-Host "  Found $($procs.Count) ChatGPT/Codex process(es) still running:" -ForegroundColor DarkYellow
        foreach ($p in $procs) {
            $desc = if ($p.Path) { $p.Path } else { $p.ProcessName }
            Write-Host "    PID $($p.Id): $desc" -ForegroundColor DarkYellow
        }
        Write-Host ""
        Write-Host "  The app can leave background processes running even after you" -ForegroundColor Gray
        Write-Host "  close the main window. These hold file locks inside .codex." -ForegroundColor Gray
        Write-Host ""
        $choice = Read-Host "  Terminate them? Type 'y' to end these processes, anything else to abort"
        if ($choice -ne 'y') { return $false }
    
        foreach ($p in $procs) {
            try {
                Stop-Process -Id $p.Id -Force -ErrorAction Stop
                Write-Host "  [OK] Terminated PID $($p.Id) ($($p.ProcessName))" -ForegroundColor Green
            } catch {
                Write-Host "  [FAIL] Could not terminate PID $($p.Id): $_" -ForegroundColor Red
            }
        }
    
        Start-Sleep -Seconds 2
    
        if (Test-CodexRunning) {
            Write-Host "  [FAIL] Some processes are still running." -ForegroundColor Red
            return $false
        }
        return $true
    }
    
    function Move-FolderRobust {
        param(
            [string]$Source,
            [string]$Destination
        )
        <#
            Explorer.exe can hold handles on recently-visited folders (thumbnail
            cache, shell navigation history, quick-access indexing) even when no
            Explorer window is open to that path. This blocks Rename-Item / Move-Item.
    
            robocopy copies individual files (bypassing the folder-level lock),
            then deletes from the source. It ships with every Windows version
            since Vista / Server 2008, so it is available on all Windows 10/11.
        #>
        $robocopy = Get-Command 'robocopy' -ErrorAction SilentlyContinue
        if ($null -ne $robocopy) {
            $output = & robocopy $Source $Destination /E /MOVE /R:3 /W:2 /NJH /NJS /NP /NDL 2>&1
            if ($LASTEXITCODE -ge 8) {
                throw "robocopy failed (exit $LASTEXITCODE). Output:`n$($output -join "`n")"
            }
            # /MOVE removes files but may leave the empty root dir if Explorer locks it
            if (Test-Path $Source) {
                Start-Sleep -Seconds 2
                try { Remove-Item -Recurse -Force $Source -ErrorAction Stop } catch {
                    Write-Host "  [INFO] Empty shell of old folder remains (Explorer lock) — harmless." -ForegroundColor DarkYellow
                }
            }
        } else {
            Move-Item -Path $Source -Destination $Destination -Force
        }
    }
    
    function Restore-OriginalProfile {
        Write-Host "  Restoring original profile from backup..." -ForegroundColor DarkYellow
        if (Test-Path $codexDir) {
            Remove-Item -Recurse -Force $codexDir -ErrorAction SilentlyContinue
        }
        Move-FolderRobust -Source $backupDir -Destination $codexDir
        Write-Host "  Original profile restored." -ForegroundColor Green
    }
    
    # ══════════════════════════════════════════════════════════════
    #  STEP 1 — Pre-flight checks
    # ══════════════════════════════════════════════════════════════
    Write-Host ""
    Write-Host "================================================================" -ForegroundColor Cyan
    Write-Host "  Codex / ChatGPT Desktop — Send Button Repair Script" -ForegroundColor Cyan
    Write-Host "================================================================" -ForegroundColor Cyan
    Write-Host ""
    Write-Host "This script fixes the frozen/spinning Send button by performing"
    Write-Host "a selective profile reset. Your conversations, projects, skills,"
    Write-Host "and attachments will be preserved."
    Write-Host ""
    Write-Host "Related issues:"
    Write-Host "  https://github.com/openai/codex/issues/40968" -ForegroundColor Gray
    Write-Host "  https://github.com/openai/codex/issues/40872" -ForegroundColor Gray
    Write-Host ""
    
    # Check app is closed — including hidden background processes
    if (Test-CodexRunning) {
        Write-Host "[!] ChatGPT / Codex processes are still running." -ForegroundColor DarkYellow
        if (-not (Stop-CodexProcesses)) {
            Write-Host ""
            Write-Host "[FAIL] Cannot proceed with processes still running." -ForegroundColor Red
            Write-Host ""
            Write-Host "  Tip: The app can leave HIDDEN background processes that" -ForegroundColor Yellow
            Write-Host "  don't appear in the taskbar or system tray. Check Task" -ForegroundColor Yellow
            Write-Host "  Manager > 'Background processes' section and end anything" -ForegroundColor Yellow
            Write-Host "  named ChatGPT, Codex, CodexAppServer, or OpenAI." -ForegroundColor Yellow
            exit 1
        }
    }
    Write-Host "[OK] No ChatGPT / Codex processes detected." -ForegroundColor Green
    
    # Check profile exists
    if (-not (Test-Path $codexDir)) {
        Write-Host "[FAIL] No .codex profile found at: $codexDir" -ForegroundColor Red
        Write-Host "       Nothing to repair. Is the app installed?" -ForegroundColor Red
        exit 1
    }
    
    $profileSize = "{0:N0} MB" -f ((Get-ChildItem $codexDir -Recurse -File -ErrorAction SilentlyContinue |
        Measure-Object -Property Length -Sum).Sum / 1MB)
    Write-Host "[OK] Found profile at $codexDir ($profileSize)" -ForegroundColor Green
    
    # ══════════════════════════════════════════════════════════════
    #  STEP 2 — Handle previous backup
    # ══════════════════════════════════════════════════════════════
    if (Test-Path $backupDir) {
        $backupCreated = (Get-Item $backupDir).CreationTime
        $timestamp = $backupCreated.ToString('yyyyMMdd-HHmmss')
        $archivedBackup = Join-Path $env:USERPROFILE "$BackupName-$timestamp"
        Write-Host ""
        Write-Host "[!] A previous backup already exists at:" -ForegroundColor DarkYellow
        Write-Host "    $backupDir" -ForegroundColor DarkYellow
        Write-Host ""
        Write-Host "    It will be renamed to: $archivedBackup" -ForegroundColor DarkYellow
        Write-Host "    (This protects your data if a previous repair was incomplete.)" -ForegroundColor Gray
        Write-Host ""
        $choice = Read-Host "    Continue? Type 'y' to proceed, anything else to abort"
        if ($choice -ne 'y') {
            Write-Host "Aborted."
            exit 0
        }
        Write-Host "  Renaming previous backup..." -ForegroundColor Gray
        Move-FolderRobust -Source $backupDir -Destination $archivedBackup
        Write-Host "  [OK] Previous backup moved to $archivedBackup" -ForegroundColor Green
    }
    
    # ══════════════════════════════════════════════════════════════
    #  STEP 3 — Back up the current profile
    # ══════════════════════════════════════════════════════════════
    Write-Host ""
    Write-Host "Backing up current profile to $backupDir ..." -ForegroundColor White
    Move-FolderRobust -Source $codexDir -Destination $backupDir
    Write-Host "[OK] Profile backed up." -ForegroundColor Green
    
    # ══════════════════════════════════════════════════════════════
    #  STEP 4 — User launches and quits the app to seed a clean profile
    # ══════════════════════════════════════════════════════════════
    Write-Host ""
    Write-Host "────────────────────────────────────────────────────────────" -ForegroundColor Yellow
    Write-Host "  ACTION REQUIRED: Create a fresh profile" -ForegroundColor Yellow
    Write-Host "────────────────────────────────────────────────────────────" -ForegroundColor Yellow
    Write-Host ""
    Write-Host "  1. Launch the ChatGPT / Codex desktop app now."
    Write-Host ""
    Write-Host "  2. LOG IN to your account and WAIT for the main chat" -ForegroundColor White
    Write-Host "     window to fully load." -ForegroundColor White
    Write-Host ""
    Write-Host "     >>> You MUST complete login and see the main chat <<<" -ForegroundColor Red
    Write-Host "     >>> interface. Do NOT stop at the login or welcome <<<" -ForegroundColor Red
    Write-Host "     >>> screen. The app needs to finish its full setup  <<<" -ForegroundColor Red
    Write-Host "     >>> to generate the clean runtime state.            <<<" -ForegroundColor Red
    Write-Host ""
    Write-Host "  3. Once you see the main chat interface, QUIT the app"
    Write-Host "     completely (system tray > Quit, or Task Manager)."
    Write-Host ""
    Write-Host "  4. Come back here and press Enter."
    Write-Host ""
    Read-Host "Press Enter after the app has been launched, logged in, and closed"
    
    # Verify the app is closed (including background processes from the login session)
    if (Test-CodexRunning) {
        Write-Host ""
        Write-Host "[!] The app still appears to be running." -ForegroundColor DarkYellow
        if (-not (Stop-CodexProcesses)) {
            Write-Host "[FAIL] Cannot continue with processes still running." -ForegroundColor Red
            Restore-OriginalProfile
            Write-Host "Close all ChatGPT/Codex processes and try again."
            exit 1
        }
    }
    
    # Verify the fresh profile was created
    if (-not (Test-Path $codexDir)) {
        Write-Host "[FAIL] No new .codex folder was created." -ForegroundColor Red
        Write-Host "       Did you launch the app and log in fully?" -ForegroundColor Red
        Restore-OriginalProfile
        Write-Host "Try again — make sure you log in and see the main chat window."
        exit 1
    }
    
    # Verify the global state file exists (proves full initialization happened)
    $newStatePath = Join-Path $codexDir $globalStateFile
    if (-not (Test-Path $newStatePath)) {
        Write-Host "[WARN] Fresh profile exists but global state file is missing." -ForegroundColor DarkYellow
        Write-Host "       The app may not have fully initialized." -ForegroundColor DarkYellow
        Write-Host "       Continuing — but project metadata merge will be skipped." -ForegroundColor DarkYellow
    }
    
    Write-Host "[OK] Fresh profile created." -ForegroundColor Green
    
    # ══════════════════════════════════════════════════════════════
    #  STEP 5 — Restore conversation databases
    # ══════════════════════════════════════════════════════════════
    Write-Host ""
    Write-Host "Restoring conversation databases..." -ForegroundColor White
    
    $sqlite3Cmd = Get-Command 'sqlite3' -ErrorAction SilentlyContinue
    if ($null -ne $sqlite3Cmd) {
        Write-Host "  sqlite3 found — will validate databases before restoring." -ForegroundColor Gray
    } else {
        Write-Host "  sqlite3 not on PATH — skipping integrity checks." -ForegroundColor Gray
        Write-Host "  (Install sqlite3 for validation, or ignore this — copies will still work.)" -ForegroundColor Gray
    }
    
    $dbRestored = 0
    foreach ($db in $databasesToRestore) {
        $src = Join-Path $backupDir $db
        $dst = Join-Path $codexDir $db
    
        if (-not (Test-Path $src)) {
            # WAL/SHM files may not exist — only warn for the main .sqlite files
            if ($db -like '*.sqlite') {
                Write-Host "  [SKIP] $db — not found in backup." -ForegroundColor DarkYellow
            }
            continue
        }
    
        # Run integrity check only on the main .sqlite files, not WAL/SHM
        if (($null -ne $sqlite3Cmd) -and ($db -like '*.sqlite') -and ($db -notlike '*-shm') -and ($db -notlike '*-wal')) {
            $check = & sqlite3 $src "PRAGMA quick_check;" 2>&1
            if ($check -ne 'ok') {
                Write-Host "  [WARN] $db FAILED integrity check: $check" -ForegroundColor Red
                Write-Host "         Skipping — you may lose conversation history from this database." -ForegroundColor Red
                continue
            }
        }
    
        $sizeKB = "{0:N0} KB" -f ((Get-Item $src).Length / 1KB)
        Copy-Item -Path $src -Destination $dst -Force
        $dbRestored++
    
        if ($db -like '*.sqlite') {
            Write-Host "  [OK] $db ($sizeKB)" -ForegroundColor Green
        }
    }
    
    if ($dbRestored -eq 0) {
        Write-Host "  [WARN] No conversation databases were restored." -ForegroundColor DarkYellow
    }
    
    # ══════════════════════════════════════════════════════════════
    #  STEP 6 — Restore conversation content and portable folders
    # ══════════════════════════════════════════════════════════════
    Write-Host ""
    Write-Host "Restoring conversation content and portable data..." -ForegroundColor White
    
    foreach ($folder in $foldersToRestore) {
        $src = Join-Path $backupDir $folder
        $dst = Join-Path $codexDir $folder
    
        if (-not (Test-Path $src)) {
            Write-Host "  [--] $folder — not in backup." -ForegroundColor Gray
            continue
        }
    
        $fileCount = @(Get-ChildItem $src -Recurse -File -ErrorAction SilentlyContinue).Count
        if ($fileCount -eq 0) {
            Write-Host "  [--] $folder — exists but is empty." -ForegroundColor Gray
            continue
        }
    
        $folderSize = "{0:N0} MB" -f ((Get-ChildItem $src -Recurse -File -ErrorAction SilentlyContinue |
            Measure-Object -Property Length -Sum).Sum / 1MB)
        Copy-Item -Path $src -Destination $dst -Recurse -Force
        Write-Host "  [OK] $folder ($fileCount files, $folderSize)" -ForegroundColor Green
    }
    
    # ══════════════════════════════════════════════════════════════
    #  STEP 7 — Restore individual files
    # ══════════════════════════════════════════════════════════════
    Write-Host ""
    Write-Host "Restoring auxiliary files..." -ForegroundColor White
    
    foreach ($file in $filesToRestore) {
        $src = Join-Path $backupDir $file
        $dst = Join-Path $codexDir $file
    
        if (-not (Test-Path $src)) {
            Write-Host "  [--] $file — not in backup." -ForegroundColor Gray
            continue
        }
    
        Copy-Item -Path $src -Destination $dst -Force
        Write-Host "  [OK] $file" -ForegroundColor Green
    }
    
    # ══════════════════════════════════════════════════════════════
    #  STEP 8 — Merge project and thread metadata into the new global state
    # ══════════════════════════════════════════════════════════════
    Write-Host ""
    Write-Host "Merging project and thread metadata..." -ForegroundColor White
    
    $oldStatePath = Join-Path $backupDir $globalStateFile
    
    if ((Test-Path $oldStatePath) -and (Test-Path $newStatePath)) {
        $oldState = Get-Content $oldStatePath -Raw | ConvertFrom-Json -AsHashtable
        $newState = Get-Content $newStatePath -Raw | ConvertFrom-Json -AsHashtable
    
        $merged = 0
        foreach ($key in $keysToMerge) {
            if ($oldState.ContainsKey($key)) {
                $count = if ($oldState[$key] -is [System.Collections.ICollection]) { $oldState[$key].Count } else { 'scalar' }
                $newState[$key] = $oldState[$key]
                $merged++
                Write-Host "  [OK] $key ($count entries)" -ForegroundColor Green
            } else {
                Write-Host "  [--] $key — not in backup." -ForegroundColor Gray
            }
        }
    
        if ($merged -gt 0) {
            $newState | ConvertTo-Json -Depth 100 -Compress:$false |
                Set-Content $newStatePath -Encoding utf8NoBOM -ErrorAction Stop
            Write-Host "  [OK] Saved merged global state ($merged keys)." -ForegroundColor Green
        } else {
            Write-Host "  [INFO] No keys found to merge." -ForegroundColor Gray
        }
    
        # Show what was intentionally NOT restored
        $skippedDangerous = @()
        foreach ($dk in $dangerousKeys) {
            if ($oldState.ContainsKey($dk)) { $skippedDangerous += $dk }
        }
        if ($skippedDangerous.Count -gt 0) {
            Write-Host ""
            Write-Host "  [FIX] Intentionally NOT restored (corrupted runtime state):" -ForegroundColor Magenta
            foreach ($sk in $skippedDangerous) {
                $oldVal = $oldState[$sk]
                $newVal = $newState[$sk]
                Write-Host "        - $sk (was: $oldVal -> now: $newVal)" -ForegroundColor Magenta
            }
        }
    } else {
        if (-not (Test-Path $oldStatePath)) {
            Write-Host "  [SKIP] No global state file in backup — nothing to merge." -ForegroundColor DarkYellow
        }
        if (-not (Test-Path $newStatePath)) {
            Write-Host "  [SKIP] No global state file in new profile — app may not have initialized fully." -ForegroundColor DarkYellow
        }
    }
    
    # ══════════════════════════════════════════════════════════════
    #  DONE — Summary
    # ══════════════════════════════════════════════════════════════
    Write-Host ""
    Write-Host "================================================================" -ForegroundColor Cyan
    Write-Host "  Repair complete!" -ForegroundColor Cyan
    Write-Host "================================================================" -ForegroundColor Cyan
    Write-Host ""
    Write-Host "  PRESERVED:" -ForegroundColor Green
    Write-Host "    Conversations and thread history (rollout JSONL files)"
    Write-Host "    Conversation databases (state, thread history)"
    Write-Host "    Thread-to-project mappings"
    Write-Host "    AI memories, skills, rules, attachments, images"
    Write-Host "    Agent and user configuration"
    Write-Host ""
    Write-Host "  RESET (the fix):" -ForegroundColor Magenta
    Write-Host "    Runtime queue state, caches, locks, logs, WebView state,"
    Write-Host "    Chromium profile, internal databases (logs, queue, goals)."
    Write-Host ""
    Write-Host "  VERIFY THE FIX:" -ForegroundColor Yellow
    Write-Host "    1. Launch the ChatGPT / Codex desktop app."
    Write-Host "    2. Open an EXISTING conversation."
    Write-Host "    3. Send a follow-up message — it should submit normally."
    Write-Host "    4. After the reply finishes, send a SECOND follow-up."
    Write-Host "    5. If both messages work, the repair succeeded."
    Write-Host ""
    Write-Host "  BACKUP LOCATION:" -ForegroundColor Gray
    Write-Host "    $backupDir" -ForegroundColor Gray
    Write-Host "    Delete it once you have confirmed everything works." -ForegroundColor Gray
    Write-Host ""
    Write-Host "  IF THE PROBLEM RETURNS:" -ForegroundColor Gray
    Write-Host "    Re-run this script. It is safe to repeat." -ForegroundColor Gray
    Write-Host "    Some users report the fix is permanent; others find it" -ForegroundColor Gray
    Write-Host "    recurs after a few hours. A sign-out / sign-in can also" -ForegroundColor Gray
    Write-Host "    provide temporary relief between full resets." -ForegroundColor Gray
    Write-Host ""

    Tested on

    • Windows 11 Pro (10.0.26200)
    • OpenAI.Codex 26.915.3509.0 (Sep 19, 2026)
    • PowerShell 7.x
    • Profile with 58 thread-project assignments, 306 session rollout files (~531 MB), 10 projects

    The fix was confirmed working: both follow-up messages in existing conversations submit normally after the repair.

  15. juanimator commented on Sep 20, 2026

    @juanimator

    Just want to chime in that I'm experiencing this issue as well.

    • ChatGPT on web works
    • Codex CLI works
    • ChatGPT mobile app works
    • Windows ChatGPT app, doesn't work
    • But connecting to the Windows app using the Remote tab of the phone app works

    So here I am typing into my phone sitting in front of my PC. LOL

  16. xiumoon4u-svg commented on Sep 20, 2026

    @xiumoon4u-svg

    Additional diagnostic findings

    I reproduced the issue in a newly created conversation without navigating away from it.

    Reproduction:

    1. Start a new conversation in Codex Desktop for Windows.
    2. Send the first message and wait until the response is fully completed.
    3. Type a second message in the same conversation.

    Observed behavior:

    • The first message succeeds.
    • After typing the second message, the send button remains greyed out.
    • Pressing Enter immediately causes the send button to spin.
    • The text remains in the composer.
    • The Stop button never appears.
    • Switching to another conversation and back clears the spinning indicator, but the unsent text remains.
    • Changing models does not resolve the issue.

    Isolation tests:

    • The bundled CLI version is codex-cli 0.155.0-alpha.9.2.
    • Using that same bundled CLI, I successfully completed two consecutive turns in one interactive session.
    • A previous direct app-server test also successfully started a new turn in an existing conversation.
    • The Desktop logs show successful thread hydration and responses to configuration/model-list requests.
    • No matching Codex application crash or hang was found in the Windows Application event log.

    The issue is therefore reproducible in the Windows Desktop submission flow, while consecutive turns work through the bundled CLI. The exact failing frontend state or IPC operation has not yet been identified.

    One potentially relevant log entry during thread resumption contains both latestTurnStatus=completed and markedStreaming=true, although it is not yet established whether this is an abnormal persistent state or a normal transient recovery marker.

    Could the maintainers advise how to capture the renderer-side send-button disabled state or submission failure in this Windows build? The current application process does not expose a remote debugging port.

  17. xiumoon4u-svg commented on Sep 20, 2026

    @xiumoon4u-svg

    Rollback test result (Windows)

    I downgraded Codex Desktop from MSIX version 26.915.4065.0 to 26.911.7940.0 on the same Windows machine.

    After the rollback, I can send multiple consecutive messages in the same conversation normally. On 26.915.4065.0, the second message could not be submitted, including in newly created conversations.

    The rollback resolved the issue on my machine. This suggests a regression between these versions, although I have not identified the exact cause.

  18. PilotFlying commented on Sep 20, 2026

    @PilotFlying

    As it stands, I keep having to run my script because the failure keeps reoccurring. (Exit the app, after successfully recovering and continuing with prompts; restart and all chats are "locked" again).

  19. PilotFlying commented on Sep 20, 2026

    @PilotFlying

    Quick fix

    it turns out that this is enough to fix it (temporarily, in my case I need to delete before every start):

    Remove-Item "$env:USERPROFILE\.codex\sqlite" -Recurse -Force


    Claude's take on the cause:

    Root cause: sqlite/codex-dev.db

    Through A/B testing, I isolated the sole culprit: deleting sqlite/codex-dev.db (and its WAL/SHM files) fixes the recurrence every time. No other reset is needed.

    sqlite/codex-dev.db is the Chromium/WebView IndexedDB persistent storage. This is consistent with @deshazer's analysis, which identified two stuck TanStack Query entries:

    ["vscode", "codex-home"]
    ["vscode", "codex-home", "{\"hostId\":\"local\"}"]
    

    Both remain in status: "pending", fetchStatus: "fetching" with dataUpdatedAt: 0 — no data, no error.

    What's happening: The app uses TanStack Query with persistQueryClient (or equivalent) and writes its query cache to IndexedDB (sqlite/codex-dev.db). When the codex-home configuration queries get stuck in a pending/fetching state during a session, that stuck state is serialized to disk. On the next launch, the persisted cache is re-hydrated, the queries start in their permanently-stuck state, and the composer never enables — regardless of whether the backend and thread databases are healthy. The user sees a frozen Send button.

    Suggested fixes for the OpenAI team:

    • Option A (targeted): Exclude the codex-home configuration queries from query cache persistence entirely. These are app-config queries that should be fetched fresh on every launch — there's no benefit to caching them across sessions.
    • Option B (defensive): Add a rehydration guard that drops any persisted query still in pending/fetching state with dataUpdatedAt: 0. These represent incomplete requests from a previous session that will never resolve.
    • Option C (resilience): The composer's pre-submit readiness check (getTurnCoordinator(), deferAutomaticTurns()) should have a timeout that surfaces an actionable error instead of blocking indefinitely.
  20. a31400000000-spec commented on Sep 20, 2026

    @a31400000000-spec

    Confirmed recovery in my case: sign out and sign back in

    I experienced the same Windows Codex desktop symptoms: follow-up messages would not send, the Send arrow became dim, and the loading spinner continued without a response.

    On September 20, 2026, I signed out of my account in the desktop app and signed back in. Sending messages worked again afterward, including a second message in the same conversation.

    ChatGPT on the web suggested signing in again as a possible remedy. I actually tried it and can now confirm that it restored functionality in my case. This is a verified recovery on my machine, not a claim that the underlying bug is permanently fixed or that it will work for everyone.

    I hope this simple step helps other affected users and gives the OpenAI team another useful troubleshooting data point.

    P.S. A friendly request to OpenAI: if there is a feedback-recognition or goodwill program, I would be grateful to be considered for a Codex usage-reset credit or a complimentary Pro 20× upgrade. A small wish from a user who hopes this helps people around the world. Thank you!

  21. devfin commented on Sep 21, 2026

    @devfin

    I’m seeing the same or a very similar problem on Windows: the Send button can get stuck spinning indefinitely, and in some threads I also started getting:

    ChatGPT can't load config.toml, so this thread can't resume. Fix config.toml: invalid transport in mcp_servers.codex_app

    In my case, there is no [mcp_servers.codex_app] section in my user config.toml, so manually editing that file does not appear to be the real fix.

    I also tried rolling the stable app back to 26.911.7940.0, but the problem still reproduced.

    One potentially useful workaround / A-B test is to install the official Microsoft Store Codex Beta side-by-side with the stable version instead of immediately deleting .codex, resetting the profile, or reinstalling everything.

    PowerShell:

    winget install 9N8CJ4W95TBZ --source msstore

    Then verify:

    Get-AppxPackage OpenAI.CodexBeta |
        Select-Object Name,Version,PackageFullName

    On my machine this installed:

    OpenAI.CodexBeta 26.727.4816.0
    

    The Beta package is separate from the stable package, so both can remain installed at the same time. This makes it useful for testing whether the problem is specific to the current stable desktop build without destroying the existing Codex profile.

    I’m currently using the Beta with the same projects and, so far, it’s working normally — no stuck Send spinner and no invalid transport in mcp_servers.codex_app error yet.

    If others are stuck with the infinite Send spinner, it may be worth trying the Beta before resetting .codex or other local state.

  22. o-khard commented on Sep 21, 2026

    @o-khard

    Quick fix

    it turns out that this is enough to fix it (temporarily, in my case I need to delete before every start):

    Remove-Item "$env:USERPROFILE\.codex\sqlite" -Recurse -Force

    That helped me as well on the latest ChatGPT app version. Sadly, such blocking issues persist in this app. Guess it's not AGI yet.

    I asked Codex to create a .cmd file to launch that command and then ChatGPT in one go instead of the regular shortcut to ChatGPT app

    @echo off
    setlocal
    
    powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "Remove-Item \"$env:USERPROFILE\.codex\sqlite\" -Recurse -Force"
    if errorlevel 1 (
        echo Failed to remove the Codex SQLite folder.
        pause
        exit /b 1
    )
    
    start "" explorer.exe "shell:AppsFolder\OpenAI.Codex_2p2nqsd0c76g0!App"
    
  23. KRMAGTU commented on Sep 24, 2026

    @KRMAGTU

    @tibo-openai Could OpenAI please look at the impact of the current Codex Windows desktop bug on paying users?

    Codex Desktop has become effectively unusable for sustained work: the first message may send, then follow-up messages leave the Send button greyed out and nothing submits. New chats only help temporarily.

    The failure reproduces on two separate paid Pro x5 accounts. It began Wednesday morning, 23 September 2026 (Australia/Brisbane). I reported it on 26.917.71314 on 24 September; the installed Windows package is now 26.917.9434.0. I’ve tried the suggested workarounds and even rollback without resolving it.

    There is now another Windows UI failure: a "finish setup of Windows" popup appears. Pressing Continue glitches the bottom chat area and leaves the popup stuck on screen; Retry does not recover it.

    The important diagnostic is that the same account, projects and conversations continue working through Remote on my phone — it’s the Windows desktop client that is blocking the work. I’m using phone Remote even to report this issue because I cannot reliably send follow-up messages from the PC app.

    I use Codex heavily for substantial PC development. Working around this entirely through Remote is difficult, and the failure has stopped my normal workflow while my paid subscription period continues.

    Could OpenAI confirm that the Windows issue is being actively investigated and provide a way for affected subscribers to request individual review of the working time lost?

  24. DeanZhai commented on Sep 24, 2026

    @DeanZhai

    I think I found the cause, in setting - voice - microphone, choose one from the list instead of system default which solved my similar problem

  25. BartlyJ commented on Sep 25, 2026

    @BartlyJ

    Reproducing this on the current Windows ChatGPT desktop app.

    App: Powered by Codex & OWL 26.917.71314, released Sep 23, 2026
    OS: Windows 11 Pro 25H2, build 26200.9550
    Subscription: Plus

    Repro:

    1. Start a new conversation.
    2. First prompt completes normally.
    3. Send a second prompt in the same conversation.
    4. Send control enters an endless spinner and the composer becomes locked.

    This occurs in Chat, Work, and Codex. ChatGPT in the browser works normally on the same PC/account/network.

    Repair, Reset, uninstall, reinstall, and fresh conversations did not resolve it.

    The problem began on Sep 23, 2026, the same date app version 26.917.71314 was released.

    Session ID / Feedback ID:
    01a0d961-6de1-7b41-a3e2-c992a22fb2ae

    The local session transcript confirms:
    payload.session_id = 01a0d961-6de1-7b41-a3e2-c992a22fb2ae

    Please include this session in the Windows follow-up-message freeze investigation.

  26. Lyamon4 commented on Sep 27, 2026

    @Lyamon4

    i found simple though simple solution.

    1. Just kick your codex account session from the web (security tab)
    2. kill the codex process
    3. open codex and sign in into your account - and your done
      Issue might be in new Codex interface for PC.
  27. KRMAGTU commented on Sep 27, 2026

    @KRMAGTU
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    appIssues related to the Codex desktop appbugSomething isn't workingsessionIssues involving session (thread) management, resuming, forking, naming, archivingwindows-osIssues related to Codex on Windows systems

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions