How to Fix Missing Copilot Logo and Unavailability After Edge Update

TL;DR

Run the following Python code:

import os
import sys
import json
import subprocess

import psutil


def get_version_and_user_data_path():
    os_and_user_data_paths = {
        'win32': {
            'stable': '~/AppData/Local/Microsoft/Edge/User Data',
            'canary': '~/AppData/Local/Microsoft/Edge SxS/User Data',
            'dev': '~/AppData/Local/Microsoft/Edge Dev/User Data',
            'beta': '~/AppData/Local/Microsoft/Edge Beta/User Data',
        },
        'linux': {
            'stable': '~/.config/microsoft-edge',
            'canary': '~/.config/microsoft-edge-canary',
            'dev': '~/.config/microsoft-edge-dev',
            'beta': '~/.config/microsoft-edge-beta',
        },
        'darwin': {
            'stable': '~/Library/Application Support/Microsoft Edge',
            'canary': '~/Library/Application Support/Microsoft Edge Canary',
            'dev': '~/Library/Application Support/Microsoft Edge Dev',
            'beta': '~/Library/Application Support/Microsoft Edge Beta',
        },
    }

    for platform, version_and_user_data_path in os_and_user_data_paths.items():
        available_version_and_user_data_path = {}
        if sys.platform.startswith(platform):
            for version, user_data_path in version_and_user_data_path.items():
                user_data_path = os.path.abspath(os.path.expanduser(user_data_path))
                if os.path.exists(user_data_path):
                    available_version_and_user_data_path[version] = user_data_path
            return available_version_and_user_data_path

    raise Exception('Unsupported platform %s' % sys.platform)


def shutdown_edge():
    terminated_edges = set()
    for process in psutil.process_iter():
        try:
            if sys.platform == 'darwin':
                if not process.name().startswith('Microsoft Edge'):
                    continue
            elif os.path.splitext(process.name())[0] != 'msedge':
                continue
            elif not process.is_running():
                continue
            elif process.parent() is not None and process.parent().name() == process.name():
                continue
            location = process.exe()
            process.kill()
            terminated_edges.add(location)
        except psutil.NoSuchProcess:
            pass
    return terminated_edges


def get_last_version(user_data_path):
    last_version_file = os.path.join(user_data_path, 'Last Version')
    if not os.path.exists(last_version_file):
        return None
    with open(last_version_file, 'r', encoding='utf-8') as fp:
        return fp.read()


def patch_local_state(user_data_path):
    local_state_file = os.path.join(user_data_path, 'Local State')
    if not os.path.exists(local_state_file):
        print('Failed to patch Local State. File not found', local_state_file)

    with open(local_state_file, 'r', encoding='utf-8') as fp:
        local_state = json.load(fp)

    if local_state['variations_country'] != 'US':
        local_state['variations_country'] = 'US'
        with open(local_state_file, 'w', encoding='utf-8') as fp:
            json.dump(local_state, fp)
        print('Succeeded in patching Local State')
    else:
        print('No need to patch Local State')


def patch_preferences(user_data_path):
    for file in os.listdir(user_data_path):
        if not os.path.isdir(file) and file != 'Default' and not file.startswith('Profile '):
            continue

        preferences_file = os.path.join(user_data_path, file, 'Preferences')
        if not os.path.exists(preferences_file) or not os.path.isfile(preferences_file):
            continue
            
        with open(preferences_file, 'r', encoding='utf-8') as fp:
            preferences = json.load(fp)

        if preferences['browser'].get('chat_ip_eligibility_status') in [None, False]:
            preferences['browser']['chat_ip_eligibility_status'] = True
            with open(preferences_file, 'w', encoding='utf-8') as fp:
                json.dump(preferences, fp)
            print('Succeeded in patching Preferences of', file)
        else:
            print('No need to patch Preferences of', file)


def main():
    version_and_user_data_path = get_version_and_user_data_path()
    if len(version_and_user_data_path) == 0:
        raise Exception('No available user data path found')

    terminated_edges = shutdown_edge()
    if len(terminated_edges) > 0:
        print('Shutdown Edge')

    for version, user_data_path in version_and_user_data_path.items():
        last_version = get_last_version(user_data_path)
        if last_version is None:
            print('Failed to get version. File not found', os.path.join(user_data_path, 'Last Version'))
            continue
        main_version = int(last_version.split('.')[0])
        print('Patching Edge', version, last_version, '"'+user_data_path+'"')
        patch_local_state(user_data_path)
        patch_preferences(user_data_path)

    if len(terminated_edges) > 0:
        print('Restart Edge')
        for edge in terminated_edges:
            subprocess.Popen([edge, '--start-maximized'], stderr=subprocess.DEVNULL)

    input('Enter to continue...')


if __name__ == '__main__':
    main()

Original Article

This article was converted by Jianyue SimpRead; original source: zhuanlan.zhihu.com

Overview

This article introduces a method to resolve the issue where the Copilot icon does not appear in the top-right corner of the new Microsoft Edge browser. This method works across all Edge versions.

Testing confirms compatibility with Microsoft Edge on Windows, macOS, and Linux.

Additionally, the article concludes with an alternative solution—downloading an older Edge version—to serve as a fallback in case the primary method becomes obsolete.

Prerequisites

A working internet connection capable of accessing restricted regions is required. Restrictions apply only to Russia, Iran, Syria, Cuba, North Korea, Myanmar, Palestine, and East Timor. However, if using rule-based or traffic-splitting proxy configurations, ensure *.bing.com and bing.com domains are routed through the proxy.

Operating Systems: Windows 10, macOS Catalina, Debian

Tested Edge Versions:

  • Stable: 120.0.2210.91 (Stable Channel) (64-bit) and 121.0.2277.83 (Stable Channel) (64-bit)
  • Dev: 122.0.2353.0 (Official build) dev (64-bit)

Solution Strategy

Through step-by-step troubleshooting, we determined that the stable version of Edge stores user data in the following directories:

Windows: %APPDATA%\..\Local\Microsoft\Edge\User Data
Linux: $HOME/.config/microsoft-edge
macOS: $HOME/Library/Application Support/Microsoft Edge

Meanwhile, the Dev version stores its user data in:

Windows: %APPDATA%\..\Local\Microsoft\Edge Dev\User Data
Linux: $HOME/.config/microsoft-edge-dev
macOS: $HOME/Library/Application Support/Microsoft Edge Dev

The toggle controlling whether the Copilot icon appears in the browser’s top-right corner resides within certain configuration files under the user data directory: for version 120, it’s located in the Local State file; for versions 121 and later, it’s located in the Preferences file inside each profile folder.

Thus, modifying these files slightly suffices to restore the Copilot icon.

TL;DR: If you simply wish to restore the Copilot icon without delving into implementation details, proceed directly to the detailed steps below → Section 2. Modify Configuration Files → (3) Edit Configuration Files → Automated Modification, and run the provided Python script (or precompiled executable) to restore the Copilot icon.

Detailed Steps

1. Fully Close the Edge Browser

(1) Closing Edge on Windows and Linux

Ensure the browser is completely closed to prevent background processes from interfering (e.g., extensions keeping Edge active).

Click the three-dot menu in the top-right corner of the browser window and select “Close Microsoft Edge” from the dropdown.

On Windows, verify Edge has fully exited by checking the Task Manager’s “Details” tab for any msedge.exe processes. Manually terminate them if present; their absence confirms complete shutdown.

(2) Closing Edge on macOS

Hold Command + Q while focused on the Edge browser window to quit the application.

2. Modify Configuration Files

(1) Locate the User Data Directory

First, identify your OS and Edge version, then locate the corresponding user data directory using the paths above. For example, on Windows 10 with the stable Edge version, the path is %APPDATA%\..\Local\Microsoft\Edge\User Data.

  • How to open this directory
  1. On Windows 10:

    • Method 1: Press Win + E to open File Explorer, paste the path into the address bar, and press Enter.
    • Method 2: Press Win + R, type explorer "%APPDATA%\..\Local\Microsoft\Edge\User Data", and press Enter.
  2. On macOS:

    • The stable Edge user data directory is $HOME/Library/Application Support/Microsoft Edge.First, open $HOME in Finder by pressing Shift + Command + H. The Library folder is hidden by default. If it does not appear in your user home directory, press Shift + Command + . to reveal hidden files and folders. Note that if your system language is Chinese, this folder is named 资源库. Then navigate step-by-step into this directory.

(2) Determine Your Browser Version

In the Edge browser address bar, type edge://version and press Enter. The first line displayed shows the version number.

(3) Edit the Configuration File

Version 120

If your Edge browser version is 120.x.xxxx.xx, you need to modify the Local State file located in the user data directory. This is a plain-text JSON file—open it with any text editor.

Search for "variations_country":, and replace the immediately following "CN" with "US". The value inside the double quotes is a two-letter country code. When set to "CN", "RU", or other countries where Copilot is unavailable, the Copilot icon is suppressed. When set to "US", "FR", or other supported countries, Copilot becomes available.

In other words, change "variations_country":"CN" to "variations_country":"US".

Save and close the file after editing.

Version 121 and Later

If your Edge browser version is 121.x.xxxx.xx, 122.x.xxxx.xx, or any version ≥ 121, locate the user profile folders—such as Default, Profile 1, Profile 2, Profile 3, etc.—within the browser’s user data directory, then find the Preferences file inside each.

As widely known, Microsoft Edge supports multiple logged-in users/accounts, each maintaining its own isolated personal data. These per-user data are stored in separate subfolders under the browser’s user data directory. When only one user is signed in, their data reside in a folder named Default. Upon creating or signing into a second user, their data go into Profile 2; the third user’s data go into Profile 3, and so on.

For brevity, we refer to these folders (Default, Profile 2, Profile 3, etc.) collectively as user profile folders (or simply profiles), each storing the personal data of an individual Edge user.

Inside each such profile folder resides a file named Preferences, which is also a plain-text JSON file—open it with any text editor.

Search for "chat_ip_eligibility_status":, and replace the immediately following false with true.

That is, change "chat_ip_eligibility_status":false to "chat_ip_eligibility_status":true.

Note: When parsed as valid JSON, the key chat_ip_eligibility_status resides under the browser object.

If the key chat_ip_eligibility_status does not exist in the file, manually add it: first search for "browser":{, then replace that exact string with "browser":{"chat_ip_eligibility_status":true,.

Save and close the file after editing.

To enable the Copilot icon for a specific user, locate and edit the Preferences file inside that user’s corresponding profile folder.

Important: For Edge versions 142 and later, if modifying the Preferences file fails to restore the Copilot icon, try instead editing the Local State file using the method described above for version 120.

When enabling Copilot for multiple profiles simultaneously, consider using automation scripts.

Automated Modification

Alternatively, write a Python script to perform the modification automatically—eliminating manual edits every time.

A complete, cross-platform, cross-version Python script:

https://github.com/jiarandiana0307/patch-edge-copilot

This script automatically shuts down Edge, modifies the appropriate configuration file based on the detected browser version, and restarts Edge—no manual steps required (e.g., quitting Edge or editing config files).

If Python is not installed on your machine, you may use alternative tools implemented in Go, which compile directly into standalone executables:

https://github.com/xiaox0321/patch-edge-copilot

https://github.com/emmm1245/EdgeCopilotFix

Go to the Releases page of each project to download pre-built binaries; save them locally and double-click to run.

3. Use a Proxy and Launch Edge

At this point, the Copilot icon should reappear in the top-right corner.

Note: If Edge is launched without a proxy connection afterward, the Copilot icon may disappear again. Simply repeat the above steps.

Summary

Below is the author’s personal speculation regarding the underlying mechanism:

The Copilot icon disappears from Edge’s top-right corner because the browser previously accessed Bing’s AI services using a domestic IP address. As a result, Edge identifies the user as being located within mainland China. Since Microsoft does not offer Bing AI services in China, Edge disables the feature entirely.

By deleting or modifying Edge’s configuration files, the local record of prior domestic IP access to Bing’s AI services is erased—causing Edge to mistakenly assume the user is outside China, thereby restoring access to Bing AI functionality.

Reinstalling Edge alone has no effect, because traces of domestic IP access are stored in dedicated application data paths—and reinstalling does not clear those persistent records. Thus, Edge continues to treat the user as domestic and suppresses AI features.

As Edge continues updating, its detection and restriction mechanisms against domestic IP access to AI services may become increasingly strict. Should the above methods cease working, you may attempt deleting the entire Edge user data folder (e.g., %AppData%\..\Local\Microsoft\Edge\User Data)—but be aware this will erase all Edge user data.

Additional Note: Downloading an Older Edge Version

A post on the NewBing Baidu Tieba forum suggests that installing an older Edge version resolves the issue.

Source: https://tieba.baidu.com/p/8782048284

Below demonstrates how to install an older Edge version on Windows; the same procedure applies to Linux and macOS.

1. Download an Older Edge Installer

Visit the official download page:

https://www.microsoft.com/en-us/edge/business/download?form=MA13H4

Scroll down to locate instructions for downloading legacy Edge versions. Select Stable version 119 and choose the installer matching your OS. Download and install normally.

If version 119 is unavailable on the current page, use the Internet Archive (requires proxy access) to retrieve a saved snapshot of the old download page containing version 119. Here is the most recent archived copy featuring version 119:

https://web.archive.org/web/20240118233613/https://www.microsoft.com/en-us/edge/business/download?form=MA13H4

Direct download links for Edge v119.0.2151.97:

Linux (.rpm): https://packages.microsoft.com/yumrepos/edge/microsoft-edge-stable-119.0.2151.97-1.x86_64.rpm

Linux (.deb): https://packages.microsoft.com/repos/edge/pool/main/m/microsoft-edge-stable/microsoft-edge-stable_119.0.2151.97-1_amd64.deb

macOS: https://msedge.sf.dl.delivery.mp.microsoft.com/filestreamingservice/files/fec5727f-a1e0-458c-a53d-cc69caef1230/MicrosoftEdge-119.0.2151.97.pkg

Windows ARM64: https://msedge.sf.dl.delivery.mp.microsoft.com/filestreamingservice/files/8ae7f111-a120-41ca-b17c-013fa8bad929/MicrosoftEdgeEnterpriseARM64.msi

Windows 64-bit: https://msedge.sf.dl.delivery.mp.microsoft.com/filestreamingservice/files/1a0dd55d-618e-471b-92fb-5fe178a0e52d/MicrosoftEdgeEnterpriseX64.msi

Windows 32-bit: https://msedge.sf.dl.delivery.mp.microsoft.com/filestreamingservice/files/bc755c09-f5bc-42df-9ea8-54297b2466ee/MicrosoftEdgeEnterpriseX86.msi

2. Uninstall Edge Using the Remove-MS-Edge Tool

This process preserves all existing Edge user data—safe to proceed.

GitHub repository link:
https://github.com/ShadowWhisperer/Remove-MS-Edge

Below demonstrates using the GUI version:

(1) Download Remove-Edge_GUI.exe from:
https://github.com/ShadowWhisperer/Remove-MS-Edge/blob/main/Remove-Edge_GUI.exe?raw=true

Ignore any antivirus warnings; continue downloading and keep the executable.

(2) Run the program, click Remove, and wait until Finish appears.

3. Install Edge

Run the installer downloaded in Step 1 to complete installation.

4. Disable Auto-Updates

To prevent Edge from auto-updating to newer versions, disable both the update service and rename related update executables.

On Windows, for example, recursively scan %ProgramFiles(x86)%\Microsoft and its subdirectories, then rename all update-related executables (e.g., MicrosoftEdgeUpdate.exe, elevation_service.exe). Once renamed, Edge cannot locate its updater and thus cannot self-update. To re-enable updates later, simply rename the files back to their original names.

A Python script implementing this functionality:

https://github.com/jiarandiana0307/edge-update-switch

This script supports both Windows and macOS.