<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Josué Sevahc</title>
    <description>The latest articles on DEV Community by Josué Sevahc (@sevahc).</description>
    <link>https://dev.to/sevahc</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4027586%2F0b7294c1-d872-482f-ac17-b4d9901e3c0f.png</url>
      <title>DEV Community: Josué Sevahc</title>
      <link>https://dev.to/sevahc</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sevahc"/>
    <language>en</language>
    <item>
      <title>Codex in VS Code would not load on Linux Mint: plugin sync failure, broken IPv6 (solution)</title>
      <dc:creator>Josué Sevahc</dc:creator>
      <pubDate>Mon, 13 Jul 2026 17:13:46 +0000</pubDate>
      <link>https://dev.to/sevahc/codex-in-vs-code-would-not-load-on-linux-mint-plugin-sync-failure-broken-ipv6-solution-4mh3</link>
      <guid>https://dev.to/sevahc/codex-in-vs-code-would-not-load-on-linux-mint-plugin-sync-failure-broken-ipv6-solution-4mh3</guid>
      <description>&lt;h2&gt;
  
  
  Short description / summary
&lt;/h2&gt;

&lt;p&gt;The Codex extension interface remained completely blank in VS Code, while the logs showed failures when synchronizing plugins with ChatGPT and GitHub. This is the complete diagnosis on Linux Mint and the steps that restored the interface.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tags
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#linux, #vscode, #openai, #debugging, #Codex, #Linux Mint, #VS Code, #OpenAI, #Plugins, #IPv6, #GitHub, #NetworkManager, #Troubleshooting
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Codex in VS Code would not load on Linux Mint: plugin sync failure, broken IPv6, and the solution
&lt;/h2&gt;

&lt;p&gt;Recently, the Codex extension interface stopped loading in my VS Code installation on Linux Mint.&lt;/p&gt;

&lt;p&gt;The main visual symptom was not a clear error message: the Codex panel simply remained blank. The extension appeared to be installed, the tab opened, but the main controls and chat area did not load.&lt;/p&gt;

&lt;p&gt;After checking the extension logs, I found failures related to synchronizing the Codex plugin catalog with ChatGPT services and GitHub.&lt;/p&gt;

&lt;p&gt;This post documents the diagnosis, the tests performed, and the sequence that restored the interface.&lt;/p&gt;




&lt;h2&gt;
  
  
  Environment
&lt;/h2&gt;

&lt;p&gt;The problem occurred in the following environment:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Linux Mint 22.3&lt;/li&gt;
&lt;li&gt;VS Code&lt;/li&gt;
&lt;li&gt;Official Codex/OpenAI extension&lt;/li&gt;
&lt;li&gt;Codex CLI installed locally&lt;/li&gt;
&lt;li&gt;Connection with no proxy configured&lt;/li&gt;
&lt;li&gt;Functional IPv4&lt;/li&gt;
&lt;li&gt;IPv6 available on the system, but without functional external connectivity&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Visual symptom
&lt;/h2&gt;

&lt;p&gt;When opening the Codex tab in VS Code, the interface remained almost completely blank.&lt;/p&gt;

&lt;p&gt;The following elements did not appear normally:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;conversation history;&lt;/li&gt;
&lt;li&gt;functional model selector;&lt;/li&gt;
&lt;li&gt;usable prompt field;&lt;/li&gt;
&lt;li&gt;complete session controls;&lt;/li&gt;
&lt;li&gt;clear error messages in the interface itself.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The only way to understand what was happening was to open the extension logs.&lt;/p&gt;




&lt;h2&gt;
  
  
  Initial messages found
&lt;/h2&gt;

&lt;p&gt;The first logs indicated a failure when accessing the remote plugin catalog:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;WARN codex_core_plugins::manager:
failed to load recommended plugins

failed to send remote plugin catalog request to:
https://chatgpt.com/backend-api/ps/plugins/suggested
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Similar errors also appeared while warming the caches:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;failed to warm featured plugin ids cache

failed to warm remote plugin catalog cache

failed to refresh remote installed plugins cache
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The failing requests included endpoints such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://chatgpt.com/backend-api/plugins/featured
https://chatgpt.com/backend-api/ps/plugins/list
https://chatgpt.com/backend-api/ps/plugins/installed
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Initially, this appeared to be only a failure in the ChatGPT remote plugin catalog.&lt;/p&gt;

&lt;p&gt;However, after disabling the remote catalog, a second and more specific message appeared.&lt;/p&gt;




&lt;h2&gt;
  
  
  Failure while synchronizing curated plugins from GitHub
&lt;/h2&gt;

&lt;p&gt;The next log showed that Codex was also trying to synchronize a curated plugin repository from GitHub:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;WARN codex_core_plugins::startup_sync:

GitHub HTTP sync failed for curated plugin sync

failed to get curated plugins repository from:
https://api.github.com/repos/openai/plugins
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The Git fallback also failed:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git ls-remote curated plugins repo failed

fatal: unable to access
'https://github.com/openai/plugins.git/':

Could not resolve host: github.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Codex also reported that a local snapshot already existed:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;skipping export archive fallback because
a local curated plugins snapshot already exists
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;At this point, the situation was as follows:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;the interface did not load;&lt;/li&gt;
&lt;li&gt;the ChatGPT remote catalog failed;&lt;/li&gt;
&lt;li&gt;the curated GitHub repository was not synchronized;&lt;/li&gt;
&lt;li&gt;there were local temporary files related to plugins;&lt;/li&gt;
&lt;li&gt;the local Codex process remained active even after reloading the VS Code window.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Initial network diagnosis
&lt;/h2&gt;

&lt;p&gt;To distinguish a general internet connection issue from a Codex-specific failure, I tested the ChatGPT endpoint directly.&lt;/p&gt;

&lt;h3&gt;
  
  
  IPv4 test
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-4&lt;/span&gt; &lt;span class="nt"&gt;-sS&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; /dev/null &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-w&lt;/span&gt; &lt;span class="s1"&gt;'HTTP IPv4: %{http_code}\n'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--connect-timeout&lt;/span&gt; 15 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="s1"&gt;'https://chatgpt.com/backend-api/plugins/featured?platform=codex'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Result:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;HTTP IPv4: 401
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;401&lt;/code&gt; response was acceptable for this test.&lt;/p&gt;

&lt;p&gt;The purpose was not to access authenticated content, but to confirm that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the domain was resolved;&lt;/li&gt;
&lt;li&gt;the TCP connection was established;&lt;/li&gt;
&lt;li&gt;TLS worked;&lt;/li&gt;
&lt;li&gt;the server responded.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Therefore, IPv4 was operational.&lt;/p&gt;

&lt;h3&gt;
  
  
  IPv6 test
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-6&lt;/span&gt; &lt;span class="nt"&gt;-sS&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; /dev/null &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-w&lt;/span&gt; &lt;span class="s1"&gt;'HTTP IPv6: %{http_code}\n'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--connect-timeout&lt;/span&gt; 15 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="s1"&gt;'https://chatgpt.com/backend-api/plugins/featured?platform=codex'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Result:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl: (28) Failed to connect to chatgpt.com port 443
after 15002 ms: Timeout was reached

HTTP IPv6: 000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This confirmed a second problem: the system had IPv6 configured or advertised, but the IPv6 route was not functional.&lt;/p&gt;

&lt;p&gt;Applications that tried IPv6 before IPv4 could wait for the timeout before continuing.&lt;/p&gt;




&lt;h2&gt;
  
  
  Proxy verification
&lt;/h2&gt;

&lt;p&gt;I also checked whether VS Code or Codex were inheriting proxy environment variables:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;env&lt;/span&gt; | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-iE&lt;/span&gt; &lt;span class="s1"&gt;'^(http|https|all|no)_proxy='&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The command returned no values.&lt;/p&gt;

&lt;p&gt;Therefore, there was no evidence of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;HTTP_PROXY&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;HTTPS_PROXY&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ALL_PROXY&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;NO_PROXY&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A proxy was ruled out as the cause.&lt;/p&gt;




&lt;h2&gt;
  
  
  Solution that restored the interface
&lt;/h2&gt;

&lt;p&gt;The recovery involved two fronts:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;temporarily disabling the plugin subsystem;&lt;/li&gt;
&lt;li&gt;completely terminating Codex and VS Code, while removing temporary synchronization residues.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Using only &lt;code&gt;Developer: Reload Window&lt;/code&gt; was not sufficient.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Disable plugins in Codex
&lt;/h2&gt;

&lt;p&gt;I opened the global configuration file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;code ~/.codex/config.toml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It would also be possible to use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nano ~/.codex/config.toml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In the &lt;code&gt;[features]&lt;/code&gt; section, I added:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="nn"&gt;[features]&lt;/span&gt;
&lt;span class="py"&gt;plugins&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
&lt;span class="py"&gt;remote_plugin&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the &lt;code&gt;[features]&lt;/code&gt; section already exists, only the two properties should be added:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="py"&gt;plugins&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
&lt;span class="py"&gt;remote_plugin&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There must not be two &lt;code&gt;[features]&lt;/code&gt; sections in the same TOML file.&lt;/p&gt;

&lt;p&gt;The complete configuration was structurally as follows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="nn"&gt;[features]&lt;/span&gt;
&lt;span class="py"&gt;plugins&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
&lt;span class="py"&gt;remote_plugin&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This change temporarily disables:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the remote plugin catalog;&lt;/li&gt;
&lt;li&gt;general plugin loading and synchronization.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The Codex core remains usable, but features provided by plugins remain unavailable while the flags are disabled.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Completely terminate Codex and VS Code
&lt;/h2&gt;

&lt;p&gt;I closed the VS Code windows and terminated the remaining processes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pkill &lt;span class="nt"&gt;-f&lt;/span&gt; codex &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pkill &lt;span class="nt"&gt;-f&lt;/span&gt; &lt;span class="s1"&gt;'/usr/share/code/code'&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The path in the second command may vary if VS Code was installed through Snap, Flatpak, or another method.&lt;/p&gt;

&lt;p&gt;The goal was to ensure that the &lt;code&gt;app-server&lt;/code&gt; and the extension process did not remain active in the background.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Remove temporary plugin clones
&lt;/h2&gt;

&lt;p&gt;Next, I removed only the temporary plugin clone directories:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;find ~/.codex/.tmp &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-maxdepth&lt;/span&gt; 1 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-type&lt;/span&gt; d &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-name&lt;/span&gt; &lt;span class="s1"&gt;'plugins-clone-*'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-print&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-exec&lt;/span&gt; &lt;span class="nb"&gt;rm&lt;/span&gt; &lt;span class="nt"&gt;-rf&lt;/span&gt; &lt;span class="nt"&gt;--&lt;/span&gt; &lt;span class="o"&gt;{}&lt;/span&gt; + &lt;span class="se"&gt;\&lt;/span&gt;
  2&amp;gt;/dev/null
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command is restricted to directories named:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;plugins-clone-*
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;inside:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;~/.codex/.tmp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I did not delete the entire &lt;code&gt;~/.codex&lt;/code&gt; directory.&lt;/p&gt;

&lt;p&gt;This was important because &lt;code&gt;~/.codex&lt;/code&gt; may also contain:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;configurations;&lt;/li&gt;
&lt;li&gt;authentication;&lt;/li&gt;
&lt;li&gt;history;&lt;/li&gt;
&lt;li&gt;sessions;&lt;/li&gt;
&lt;li&gt;still-valid caches;&lt;/li&gt;
&lt;li&gt;MCP definitions.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  4. Open VS Code again
&lt;/h2&gt;

&lt;p&gt;After the cleanup, I started VS Code again:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;code
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;At this point, the Codex interface loaded normally.&lt;/p&gt;

&lt;p&gt;The following elements appeared again:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;chat area;&lt;/li&gt;
&lt;li&gt;prompt field;&lt;/li&gt;
&lt;li&gt;model selector;&lt;/li&gt;
&lt;li&gt;reasoning level selector;&lt;/li&gt;
&lt;li&gt;session controls;&lt;/li&gt;
&lt;li&gt;workspace access options.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Therefore, the visual recovery happened after the combination of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;disabled plugins;&lt;/li&gt;
&lt;li&gt;complete termination of the processes;&lt;/li&gt;
&lt;li&gt;removal of temporary clones;&lt;/li&gt;
&lt;li&gt;restarting VS Code.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Preventive correction for broken IPv6
&lt;/h2&gt;

&lt;p&gt;Although the interface had already returned, the previous test showed that the connection's IPv6 route was unavailable.&lt;/p&gt;

&lt;p&gt;To prevent applications from trying a broken IPv6 route before using IPv4, I configured Linux to prioritize IPv4.&lt;/p&gt;

&lt;p&gt;I ran:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-q&lt;/span&gt; &lt;span class="s1"&gt;'^precedence ::ffff:0:0/96  100$'&lt;/span&gt; /etc/gai.conf &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'precedence ::ffff:0:0/96  100'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  | &lt;span class="nb"&gt;sudo tee&lt;/span&gt; &lt;span class="nt"&gt;-a&lt;/span&gt; /etc/gai.conf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The following line was added:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;precedence ::ffff:0:0/96  100
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This configuration does not remove IPv6 from the machine.&lt;/p&gt;

&lt;p&gt;It changes the priority used by the system resolver, favoring IPv4-mapped addresses when both IPv4 and IPv6 are available.&lt;/p&gt;

&lt;p&gt;I then restarted NetworkManager:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl restart NetworkManager
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  IPv4 DNS validation
&lt;/h2&gt;

&lt;p&gt;I verified the resolution of the involved services:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;getent ahostsv4 chatgpt.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;getent ahostsv4 github.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;getent ahostsv4 api.github.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;All three commands returned IPv4 addresses.&lt;/p&gt;

&lt;p&gt;Copying specific IP addresses into static configurations is not recommended, because those addresses may change.&lt;/p&gt;




&lt;h2&gt;
  
  
  GitHub validation
&lt;/h2&gt;

&lt;p&gt;I tested the GitHub API:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-4&lt;/span&gt; &lt;span class="nt"&gt;-I&lt;/span&gt; &lt;span class="nt"&gt;--connect-timeout&lt;/span&gt; 15 https://api.github.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Main result:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;HTTP/2 200
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I then tested the main website:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-4&lt;/span&gt; &lt;span class="nt"&gt;-I&lt;/span&gt; &lt;span class="nt"&gt;--connect-timeout&lt;/span&gt; 15 https://github.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Main result:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;HTTP/2 200
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Finally, I validated the exact Git operation that had failed in the logs:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git ls-remote https://github.com/openai/plugins.git HEAD
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The command returned:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;commit-hash&amp;gt;    HEAD
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This confirmed that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the &lt;code&gt;github.com&lt;/code&gt; domain was resolving;&lt;/li&gt;
&lt;li&gt;HTTPS was functional;&lt;/li&gt;
&lt;li&gt;Git could query the repository;&lt;/li&gt;
&lt;li&gt;the &lt;code&gt;ls-remote&lt;/code&gt; operation was no longer blocked.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What was the actual cause?
&lt;/h2&gt;

&lt;p&gt;It was not possible to prove a single, isolated cause.&lt;/p&gt;

&lt;p&gt;The evidence pointed to a combination of factors:&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Plugin synchronization during startup
&lt;/h2&gt;

&lt;p&gt;Codex attempted to load:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the remote catalog;&lt;/li&gt;
&lt;li&gt;remotely installed plugins;&lt;/li&gt;
&lt;li&gt;featured plugins;&lt;/li&gt;
&lt;li&gt;the curated repository hosted on GitHub.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These operations were failing during startup.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Local processes still running
&lt;/h2&gt;

&lt;p&gt;Reloading only the VS Code window did not completely restart the entire local Codex layer.&lt;/p&gt;

&lt;p&gt;Explicitly terminating the processes was necessary.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Temporary residues
&lt;/h2&gt;

&lt;p&gt;There were directories related to temporary plugin clones.&lt;/p&gt;

&lt;p&gt;The removal was limited to the &lt;code&gt;plugins-clone-*&lt;/code&gt; directories.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. IPv6 without connectivity
&lt;/h2&gt;

&lt;p&gt;IPv4 worked, but IPv6 ended in a timeout.&lt;/p&gt;

&lt;p&gt;This could introduce delays and failures in applications that prioritized IPv6.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Apparently transient GitHub resolution failure
&lt;/h2&gt;

&lt;p&gt;The log recorded:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Could not resolve host: github.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Later, the tests with &lt;code&gt;getent&lt;/code&gt;, &lt;code&gt;curl&lt;/code&gt;, and &lt;code&gt;git ls-remote&lt;/code&gt; worked.&lt;/p&gt;

&lt;p&gt;Therefore, it would not be correct to state that there was a permanent DNS failure.&lt;/p&gt;

&lt;p&gt;The failure may have been:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;transient;&lt;/li&gt;
&lt;li&gt;related to the previous process;&lt;/li&gt;
&lt;li&gt;aggravated by the IPv6 route;&lt;/li&gt;
&lt;li&gt;associated with the plugin synchronization attempt.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What was not necessary
&lt;/h2&gt;

&lt;p&gt;In this case, it was not necessary to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;delete the entire &lt;code&gt;~/.codex&lt;/code&gt; directory;&lt;/li&gt;
&lt;li&gt;reinstall Linux;&lt;/li&gt;
&lt;li&gt;reinstall certificates;&lt;/li&gt;
&lt;li&gt;change DNS servers;&lt;/li&gt;
&lt;li&gt;remove the extension;&lt;/li&gt;
&lt;li&gt;log in to the OpenAI account again;&lt;/li&gt;
&lt;li&gt;delete MCP configurations;&lt;/li&gt;
&lt;li&gt;reinstall VS Code.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those actions would have been more invasive and could have removed valid configurations without addressing the actual cause.&lt;/p&gt;




&lt;h2&gt;
  
  
  How to re-enable plugins later
&lt;/h2&gt;

&lt;p&gt;Disabling plugins should be treated as a controlled workaround.&lt;/p&gt;

&lt;p&gt;After a Codex update or once the network is stable, the features can be tested again, one flag at a time.&lt;/p&gt;

&lt;p&gt;First, test only the remote catalog:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="nn"&gt;[features]&lt;/span&gt;
&lt;span class="py"&gt;plugins&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
&lt;span class="py"&gt;remote_plugin&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After completely restarting Codex and VS Code, check the logs.&lt;/p&gt;

&lt;p&gt;If it remains stable, test the complete subsystem:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="nn"&gt;[features]&lt;/span&gt;
&lt;span class="py"&gt;plugins&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;span class="py"&gt;remote_plugin&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the interface becomes blank again, return to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="nn"&gt;[features]&lt;/span&gt;
&lt;span class="py"&gt;plugins&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
&lt;span class="py"&gt;remote_plugin&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This strategy helps identify whether the problem is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;in the remote catalog;&lt;/li&gt;
&lt;li&gt;in the curated repository;&lt;/li&gt;
&lt;li&gt;in a specific plugin;&lt;/li&gt;
&lt;li&gt;or in the general synchronization process.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Precautions when publishing logs
&lt;/h2&gt;

&lt;p&gt;Commands such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-I&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;may return headers such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;set-cookie
authorization
x-github-request-id
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Before publishing logs in blogs, forums, or issues, remove:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;cookies;&lt;/li&gt;
&lt;li&gt;tokens;&lt;/li&gt;
&lt;li&gt;authentication headers;&lt;/li&gt;
&lt;li&gt;email addresses;&lt;/li&gt;
&lt;li&gt;unnecessary usernames;&lt;/li&gt;
&lt;li&gt;private paths;&lt;/li&gt;
&lt;li&gt;session IDs;&lt;/li&gt;
&lt;li&gt;signed URLs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For public documentation, showing the following is usually sufficient:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;HTTP/2 200
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or the specific error message.&lt;/p&gt;




&lt;h2&gt;
  
  
  Solution summary
&lt;/h2&gt;

&lt;p&gt;The sequence that resolved the problem was:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;code ~/.codex/config.toml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="nn"&gt;[features]&lt;/span&gt;
&lt;span class="py"&gt;plugins&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
&lt;span class="py"&gt;remote_plugin&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Terminate the processes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pkill &lt;span class="nt"&gt;-f&lt;/span&gt; codex &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;true
&lt;/span&gt;pkill &lt;span class="nt"&gt;-f&lt;/span&gt; &lt;span class="s1"&gt;'/usr/share/code/code'&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Remove temporary clones:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;find ~/.codex/.tmp &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-maxdepth&lt;/span&gt; 1 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-type&lt;/span&gt; d &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-name&lt;/span&gt; &lt;span class="s1"&gt;'plugins-clone-*'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-print&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-exec&lt;/span&gt; &lt;span class="nb"&gt;rm&lt;/span&gt; &lt;span class="nt"&gt;-rf&lt;/span&gt; &lt;span class="nt"&gt;--&lt;/span&gt; &lt;span class="o"&gt;{}&lt;/span&gt; + &lt;span class="se"&gt;\&lt;/span&gt;
  2&amp;gt;/dev/null
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open VS Code again:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;code
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then, as a network stabilization measure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-q&lt;/span&gt; &lt;span class="s1"&gt;'^precedence ::ffff:0:0/96  100$'&lt;/span&gt; /etc/gai.conf &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'precedence ::ffff:0:0/96  100'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  | &lt;span class="nb"&gt;sudo tee&lt;/span&gt; &lt;span class="nt"&gt;-a&lt;/span&gt; /etc/gai.conf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl restart NetworkManager
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Validate:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;getent ahostsv4 chatgpt.com
getent ahostsv4 github.com
getent ahostsv4 api.github.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-4&lt;/span&gt; &lt;span class="nt"&gt;-I&lt;/span&gt; &lt;span class="nt"&gt;--connect-timeout&lt;/span&gt; 15 https://api.github.com
curl &lt;span class="nt"&gt;-4&lt;/span&gt; &lt;span class="nt"&gt;-I&lt;/span&gt; &lt;span class="nt"&gt;--connect-timeout&lt;/span&gt; 15 https://github.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git ls-remote https://github.com/openai/plugins.git HEAD
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;The most misleading aspect of this problem was visual.&lt;/p&gt;

&lt;p&gt;The extension did not display an explicit failure screen: the interface simply did not load.&lt;/p&gt;

&lt;p&gt;The logs showed that Codex was failing during plugin synchronization operations. Recovery required temporarily disabling that layer, completely terminating the local processes, and removing temporary clones.&lt;/p&gt;

&lt;p&gt;Separately, the tests revealed a broken IPv6 route, while IPv4 remained functional. Prioritizing IPv4 reduced the risk of further timeouts.&lt;/p&gt;

&lt;p&gt;The main lesson was not to treat a blank interface as a simple VS Code visual failure. In this case, the problem was in the startup flow of the local Codex process and in the network dependencies triggered during plugin synchronization.&lt;/p&gt;

&lt;h2&gt;
  
  
  Technical references
&lt;/h2&gt;

&lt;p&gt;The official documentation confirms that the VS Code extension is powered by the &lt;code&gt;Codex app-server&lt;/code&gt; and that the CLI and extension share the &lt;code&gt;~/.codex/config.toml&lt;/code&gt; configuration. The configuration reference also documents &lt;code&gt;features.remote_plugin&lt;/code&gt;, while the official repository records recent problems related to plugin synchronization and temporary plugin directories.&lt;/p&gt;

</description>
      <category>linux</category>
      <category>vscode</category>
      <category>openai</category>
      <category>ai</category>
    </item>
    <item>
      <title>Codex no VS Code não carregava no Linux Mint: falha no sync de plugins, IPv6 quebrado (solução)</title>
      <dc:creator>Josué Sevahc</dc:creator>
      <pubDate>Mon, 13 Jul 2026 17:09:55 +0000</pubDate>
      <link>https://dev.to/sevahc/codex-no-vs-code-nao-carregava-no-linux-mint-falha-no-sync-de-plugins-ipv6-quebrado-solucao-3e8b</link>
      <guid>https://dev.to/sevahc/codex-no-vs-code-nao-carregava-no-linux-mint-falha-no-sync-de-plugins-ipv6-quebrado-solucao-3e8b</guid>
      <description>&lt;h2&gt;
  
  
  Descrição curta / resumo
&lt;/h2&gt;

&lt;p&gt;A interface da extensão Codex ficava completamente vazia no VS Code, enquanto os logs mostravam falhas ao sincronizar plugins com ChatGPT e GitHub. Este é o diagnóstico completo no Linux Mint e os passos que restauraram a interface.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tags
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#linux, #vscode, #openai, #debugging, #Codex, #Linux Mint, #VS Code, #OpenAI, #Plugins, #IPv6, #GitHub, #NetworkManager, #Troubleshooting
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Codex no VS Code não carregava no Linux Mint: falha no sync de plugins, IPv6 quebrado e a solução
&lt;/h2&gt;

&lt;p&gt;Recentemente, a interface da extensão Codex deixou de carregar no meu VS Code no Linux Mint.&lt;/p&gt;

&lt;p&gt;O principal sintoma visual não era uma mensagem clara de erro: o painel do Codex simplesmente permanecia vazio. A extensão aparecia instalada, a aba era aberta, mas os controles principais e a área de conversa não carregavam.&lt;/p&gt;

&lt;p&gt;Ao verificar os logs da extensão, encontrei falhas relacionadas à sincronização do catálogo de plugins do Codex com os serviços do ChatGPT e com o GitHub.&lt;/p&gt;

&lt;p&gt;Este post registra o diagnóstico, os testes realizados e a sequência que restaurou a interface.&lt;/p&gt;




&lt;h2&gt;
  
  
  Ambiente
&lt;/h2&gt;

&lt;p&gt;O problema ocorreu no seguinte ambiente:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Linux Mint 22.3&lt;/li&gt;
&lt;li&gt;VS Code&lt;/li&gt;
&lt;li&gt;Extensão oficial do Codex/OpenAI&lt;/li&gt;
&lt;li&gt;Codex CLI instalada localmente&lt;/li&gt;
&lt;li&gt;Conexão sem proxy configurado&lt;/li&gt;
&lt;li&gt;IPv4 funcional&lt;/li&gt;
&lt;li&gt;IPv6 disponível no sistema, mas sem conectividade externa funcional&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Sintoma visual
&lt;/h2&gt;

&lt;p&gt;Ao abrir a aba do Codex no VS Code, a interface permanecia praticamente vazia.&lt;/p&gt;

&lt;p&gt;Não apareciam normalmente:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;histórico de conversas;&lt;/li&gt;
&lt;li&gt;seletor funcional de modelo;&lt;/li&gt;
&lt;li&gt;campo de prompt utilizável;&lt;/li&gt;
&lt;li&gt;controles completos da sessão;&lt;/li&gt;
&lt;li&gt;mensagens claras de erro na própria interface.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A única forma de entender o que estava acontecendo foi abrir os logs da extensão.&lt;/p&gt;




&lt;h2&gt;
  
  
  Primeiras mensagens encontradas
&lt;/h2&gt;

&lt;p&gt;Os primeiros logs indicavam falha ao acessar o catálogo remoto de plugins:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;WARN codex_core_plugins::manager:
failed to load recommended plugins

failed to send remote plugin catalog request to:
https://chatgpt.com/backend-api/ps/plugins/suggested
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Também apareceram erros semelhantes durante o aquecimento dos caches:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;failed to warm featured plugin ids cache

failed to warm remote plugin catalog cache

failed to refresh remote installed plugins cache
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As chamadas que estavam falhando incluíam endpoints como:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://chatgpt.com/backend-api/plugins/featured
https://chatgpt.com/backend-api/ps/plugins/list
https://chatgpt.com/backend-api/ps/plugins/installed
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Inicialmente, isso parecia ser apenas uma falha no catálogo remoto do ChatGPT.&lt;/p&gt;

&lt;p&gt;Entretanto, depois de desativar o catálogo remoto, surgiu uma segunda mensagem mais específica.&lt;/p&gt;




&lt;h2&gt;
  
  
  Falha na sincronização dos plugins curados pelo GitHub
&lt;/h2&gt;

&lt;p&gt;O log seguinte mostrou que o Codex também tentava sincronizar um repositório de plugins curados no GitHub:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;WARN codex_core_plugins::startup_sync:

GitHub HTTP sync failed for curated plugin sync

failed to get curated plugins repository from:
https://api.github.com/repos/openai/plugins
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O fallback por Git também falhou:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git ls-remote curated plugins repo failed

fatal: unable to access
'https://github.com/openai/plugins.git/':

Could not resolve host: github.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O Codex ainda informou que um snapshot local já existia:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;skipping export archive fallback because
a local curated plugins snapshot already exists
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Nesse ponto, o cenário era o seguinte:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;a interface não carregava;&lt;/li&gt;
&lt;li&gt;o catálogo remoto do ChatGPT falhava;&lt;/li&gt;
&lt;li&gt;o repositório curado do GitHub não era sincronizado;&lt;/li&gt;
&lt;li&gt;havia arquivos locais temporários relacionados aos plugins;&lt;/li&gt;
&lt;li&gt;o processo local do Codex continuava ativo mesmo após recarregar a janela do VS Code.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Primeiro diagnóstico de rede
&lt;/h2&gt;

&lt;p&gt;Para separar uma falha geral de internet de uma falha específica do Codex, testei o endpoint do ChatGPT diretamente.&lt;/p&gt;

&lt;h3&gt;
  
  
  Teste por IPv4
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-4&lt;/span&gt; &lt;span class="nt"&gt;-sS&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; /dev/null &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-w&lt;/span&gt; &lt;span class="s1"&gt;'HTTP IPv4: %{http_code}\n'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--connect-timeout&lt;/span&gt; 15 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="s1"&gt;'https://chatgpt.com/backend-api/plugins/featured?platform=codex'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Resultado:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;HTTP IPv4: 401
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O código &lt;code&gt;401&lt;/code&gt; era aceitável para esse teste.&lt;/p&gt;

&lt;p&gt;O objetivo não era acessar o conteúdo autenticado, mas confirmar que:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;o domínio foi resolvido;&lt;/li&gt;
&lt;li&gt;a conexão TCP foi estabelecida;&lt;/li&gt;
&lt;li&gt;o TLS funcionou;&lt;/li&gt;
&lt;li&gt;o servidor respondeu.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Portanto, o IPv4 estava operacional.&lt;/p&gt;

&lt;h3&gt;
  
  
  Teste por IPv6
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-6&lt;/span&gt; &lt;span class="nt"&gt;-sS&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; /dev/null &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-w&lt;/span&gt; &lt;span class="s1"&gt;'HTTP IPv6: %{http_code}\n'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--connect-timeout&lt;/span&gt; 15 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="s1"&gt;'https://chatgpt.com/backend-api/plugins/featured?platform=codex'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Resultado:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl: (28) Failed to connect to chatgpt.com port 443
after 15002 ms: Timeout was reached

HTTP IPv6: 000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Isso confirmou um segundo problema: o sistema possuía IPv6 configurado ou anunciado, mas a rota IPv6 não estava funcional.&lt;/p&gt;

&lt;p&gt;Aplicações que tentassem IPv6 antes do IPv4 poderiam esperar pelo timeout antes de continuar.&lt;/p&gt;




&lt;h2&gt;
  
  
  Verificação de proxy
&lt;/h2&gt;

&lt;p&gt;Também conferi se o VS Code ou o Codex estavam herdando variáveis de proxy:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;env&lt;/span&gt; | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-iE&lt;/span&gt; &lt;span class="s1"&gt;'^(http|https|all|no)_proxy='&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O comando não retornou nenhum valor.&lt;/p&gt;

&lt;p&gt;Portanto, não havia evidência de:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;HTTP_PROXY&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;HTTPS_PROXY&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ALL_PROXY&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;NO_PROXY&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;O proxy foi descartado como causa.&lt;/p&gt;




&lt;h2&gt;
  
  
  Solução que restaurou a interface
&lt;/h2&gt;

&lt;p&gt;A recuperação aconteceu em duas frentes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;desativar temporariamente o subsistema de plugins;&lt;/li&gt;
&lt;li&gt;encerrar completamente o Codex e o VS Code, removendo resíduos temporários da sincronização.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Apenas usar &lt;code&gt;Developer: Reload Window&lt;/code&gt; não foi suficiente.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Desativar os plugins no Codex
&lt;/h2&gt;

&lt;p&gt;Abri o arquivo global de configuração:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;code ~/.codex/config.toml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Também seria possível usar:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nano ~/.codex/config.toml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Na seção &lt;code&gt;[features]&lt;/code&gt;, adicionei:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="nn"&gt;[features]&lt;/span&gt;
&lt;span class="py"&gt;plugins&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
&lt;span class="py"&gt;remote_plugin&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Caso a seção &lt;code&gt;[features]&lt;/code&gt; já exista, devem ser adicionadas somente as duas propriedades:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="py"&gt;plugins&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
&lt;span class="py"&gt;remote_plugin&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Não devem existir duas seções &lt;code&gt;[features]&lt;/code&gt; no mesmo arquivo TOML.&lt;/p&gt;

&lt;p&gt;A configuração completa ficou estruturalmente assim:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="nn"&gt;[features]&lt;/span&gt;
&lt;span class="py"&gt;plugins&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
&lt;span class="py"&gt;remote_plugin&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Essa alteração desabilita temporariamente:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;o catálogo remoto de plugins;&lt;/li&gt;
&lt;li&gt;o carregamento e a sincronização geral dos plugins.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;O núcleo do Codex continua utilizável, mas recursos fornecidos por plugins deixam de estar disponíveis enquanto as flags estiverem desativadas.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Encerrar completamente Codex e VS Code
&lt;/h2&gt;

&lt;p&gt;Fechei as janelas do VS Code e encerrei os processos restantes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pkill &lt;span class="nt"&gt;-f&lt;/span&gt; codex &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pkill &lt;span class="nt"&gt;-f&lt;/span&gt; &lt;span class="s1"&gt;'/usr/share/code/code'&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O caminho do segundo comando pode variar caso o VS Code tenha sido instalado por Snap, Flatpak ou outro método.&lt;/p&gt;

&lt;p&gt;O objetivo era garantir que o &lt;code&gt;app-server&lt;/code&gt; e o processo da extensão não permanecessem ativos em segundo plano.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Remover clones temporários de plugins
&lt;/h2&gt;

&lt;p&gt;Depois, removi somente os diretórios temporários de clones de plugins:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;find ~/.codex/.tmp &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-maxdepth&lt;/span&gt; 1 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-type&lt;/span&gt; d &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-name&lt;/span&gt; &lt;span class="s1"&gt;'plugins-clone-*'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-print&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-exec&lt;/span&gt; &lt;span class="nb"&gt;rm&lt;/span&gt; &lt;span class="nt"&gt;-rf&lt;/span&gt; &lt;span class="nt"&gt;--&lt;/span&gt; &lt;span class="o"&gt;{}&lt;/span&gt; + &lt;span class="se"&gt;\&lt;/span&gt;
  2&amp;gt;/dev/null
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Esse comando é restrito a diretórios chamados:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;plugins-clone-*
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;dentro de:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;~/.codex/.tmp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Não apaguei toda a pasta &lt;code&gt;~/.codex&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Isso foi importante porque &lt;code&gt;~/.codex&lt;/code&gt; também pode conter:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;configurações;&lt;/li&gt;
&lt;li&gt;autenticação;&lt;/li&gt;
&lt;li&gt;histórico;&lt;/li&gt;
&lt;li&gt;sessões;&lt;/li&gt;
&lt;li&gt;caches ainda válidos;&lt;/li&gt;
&lt;li&gt;definições de MCP.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  4. Abrir novamente o VS Code
&lt;/h2&gt;

&lt;p&gt;Depois da limpeza, iniciei novamente:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;code
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Nesse ponto, a interface do Codex carregou normalmente.&lt;/p&gt;

&lt;p&gt;Voltaram a aparecer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;área de conversa;&lt;/li&gt;
&lt;li&gt;campo de prompt;&lt;/li&gt;
&lt;li&gt;seletor de modelo;&lt;/li&gt;
&lt;li&gt;seletor de nível de reasoning;&lt;/li&gt;
&lt;li&gt;controles da sessão;&lt;/li&gt;
&lt;li&gt;opções de acesso ao workspace.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Portanto, a recuperação visual aconteceu após a combinação de:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;plugins desativados;&lt;/li&gt;
&lt;li&gt;encerramento completo dos processos;&lt;/li&gt;
&lt;li&gt;remoção dos clones temporários;&lt;/li&gt;
&lt;li&gt;nova inicialização do VS Code.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Correção preventiva para o IPv6 quebrado
&lt;/h2&gt;

&lt;p&gt;Embora a interface já tivesse voltado, o teste anterior mostrou que o IPv6 da conexão estava indisponível.&lt;/p&gt;

&lt;p&gt;Para evitar que aplicações tentassem uma rota IPv6 quebrada antes de usar IPv4, configurei o Linux para priorizar IPv4.&lt;/p&gt;

&lt;p&gt;Executei:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-q&lt;/span&gt; &lt;span class="s1"&gt;'^precedence ::ffff:0:0/96  100$'&lt;/span&gt; /etc/gai.conf &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'precedence ::ffff:0:0/96  100'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  | &lt;span class="nb"&gt;sudo tee&lt;/span&gt; &lt;span class="nt"&gt;-a&lt;/span&gt; /etc/gai.conf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A linha adicionada foi:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;precedence ::ffff:0:0/96  100
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Essa configuração não remove o IPv6 da máquina.&lt;/p&gt;

&lt;p&gt;Ela altera a prioridade utilizada pelo resolvedor do sistema, favorecendo endereços IPv4 mapeados quando IPv4 e IPv6 estão disponíveis.&lt;/p&gt;

&lt;p&gt;Depois, reiniciei o NetworkManager:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl restart NetworkManager
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Validação de DNS por IPv4
&lt;/h2&gt;

&lt;p&gt;Verifiquei a resolução dos serviços envolvidos:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;getent ahostsv4 chatgpt.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;getent ahostsv4 github.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;getent ahostsv4 api.github.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Os três comandos retornaram endereços IPv4.&lt;/p&gt;

&lt;p&gt;Não é recomendável copiar IPs específicos para configurações fixas, porque esses endereços podem mudar.&lt;/p&gt;




&lt;h2&gt;
  
  
  Validação do GitHub
&lt;/h2&gt;

&lt;p&gt;Testei a API do GitHub:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-4&lt;/span&gt; &lt;span class="nt"&gt;-I&lt;/span&gt; &lt;span class="nt"&gt;--connect-timeout&lt;/span&gt; 15 https://api.github.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Resultado principal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;HTTP/2 200
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Depois testei o site principal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-4&lt;/span&gt; &lt;span class="nt"&gt;-I&lt;/span&gt; &lt;span class="nt"&gt;--connect-timeout&lt;/span&gt; 15 https://github.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Resultado principal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;HTTP/2 200
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Por fim, validei exatamente a operação Git que havia falhado nos logs:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git ls-remote https://github.com/openai/plugins.git HEAD
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O comando retornou:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;commit-hash&amp;gt;    HEAD
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Isso confirmou que:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;o domínio &lt;code&gt;github.com&lt;/code&gt; estava resolvendo;&lt;/li&gt;
&lt;li&gt;o HTTPS estava funcional;&lt;/li&gt;
&lt;li&gt;o Git conseguia consultar o repositório;&lt;/li&gt;
&lt;li&gt;a operação &lt;code&gt;ls-remote&lt;/code&gt; não estava mais bloqueada.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Qual foi realmente a causa?
&lt;/h2&gt;

&lt;p&gt;Não foi possível provar uma causa única e isolada.&lt;/p&gt;

&lt;p&gt;As evidências apontaram para uma combinação de fatores:&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Sincronização de plugins durante a inicialização
&lt;/h2&gt;

&lt;p&gt;O Codex tentava carregar:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;catálogo remoto;&lt;/li&gt;
&lt;li&gt;plugins instalados remotamente;&lt;/li&gt;
&lt;li&gt;plugins em destaque;&lt;/li&gt;
&lt;li&gt;repositório curado hospedado no GitHub.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Essas operações estavam falhando durante a inicialização.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Processos locais ainda ativos
&lt;/h2&gt;

&lt;p&gt;Recarregar somente a janela do VS Code não reiniciou completamente toda a camada local do Codex.&lt;/p&gt;

&lt;p&gt;O encerramento explícito dos processos foi necessário.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Resíduos temporários
&lt;/h2&gt;

&lt;p&gt;Existiam diretórios relacionados aos clones temporários dos plugins.&lt;/p&gt;

&lt;p&gt;A remoção foi limitada aos diretórios &lt;code&gt;plugins-clone-*&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. IPv6 sem conectividade
&lt;/h2&gt;

&lt;p&gt;O IPv4 funcionava, mas o IPv6 terminava em timeout.&lt;/p&gt;

&lt;p&gt;Isso poderia introduzir atrasos e falhas em aplicações que priorizassem IPv6.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Falha aparentemente transitória de resolução do GitHub
&lt;/h2&gt;

&lt;p&gt;O log registrou:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Could not resolve host: github.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Posteriormente, os testes com &lt;code&gt;getent&lt;/code&gt;, &lt;code&gt;curl&lt;/code&gt; e &lt;code&gt;git ls-remote&lt;/code&gt; funcionaram.&lt;/p&gt;

&lt;p&gt;Por isso, não é correto afirmar que havia uma falha permanente de DNS.&lt;/p&gt;

&lt;p&gt;A falha pode ter sido:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;transitória;&lt;/li&gt;
&lt;li&gt;relacionada ao processo anterior;&lt;/li&gt;
&lt;li&gt;agravada pela rota IPv6;&lt;/li&gt;
&lt;li&gt;associada ao momento da sincronização dos plugins.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  O que não foi necessário fazer
&lt;/h2&gt;

&lt;p&gt;Neste caso, não foi necessário:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;apagar toda a pasta &lt;code&gt;~/.codex&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;reinstalar o Linux;&lt;/li&gt;
&lt;li&gt;reinstalar certificados;&lt;/li&gt;
&lt;li&gt;trocar o DNS;&lt;/li&gt;
&lt;li&gt;remover a extensão;&lt;/li&gt;
&lt;li&gt;refazer o login da conta OpenAI;&lt;/li&gt;
&lt;li&gt;apagar configurações de MCP;&lt;/li&gt;
&lt;li&gt;reinstalar o VS Code.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Essas ações seriam mais invasivas e poderiam eliminar configurações válidas sem atacar a causa real.&lt;/p&gt;




&lt;h2&gt;
  
  
  Como reativar os plugins posteriormente
&lt;/h2&gt;

&lt;p&gt;A desativação dos plugins deve ser tratada como workaround controlado.&lt;/p&gt;

&lt;p&gt;Depois de uma atualização do Codex ou da estabilização da rede, os recursos podem ser testados novamente, uma flag de cada vez.&lt;/p&gt;

&lt;p&gt;Primeiro, testar apenas o catálogo remoto:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="nn"&gt;[features]&lt;/span&gt;
&lt;span class="py"&gt;plugins&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
&lt;span class="py"&gt;remote_plugin&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Depois de reiniciar completamente o Codex e o VS Code, verificar os logs.&lt;/p&gt;

&lt;p&gt;Se estiver estável, testar o subsistema completo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="nn"&gt;[features]&lt;/span&gt;
&lt;span class="py"&gt;plugins&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;span class="py"&gt;remote_plugin&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Caso a interface volte a ficar vazia, retornar para:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="nn"&gt;[features]&lt;/span&gt;
&lt;span class="py"&gt;plugins&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
&lt;span class="py"&gt;remote_plugin&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Essa estratégia ajuda a identificar se o problema está:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;no catálogo remoto;&lt;/li&gt;
&lt;li&gt;no repositório curado;&lt;/li&gt;
&lt;li&gt;em um plugin específico;&lt;/li&gt;
&lt;li&gt;ou no processo geral de sincronização.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Cuidados ao publicar logs
&lt;/h2&gt;

&lt;p&gt;Comandos como:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-I&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;podem retornar cabeçalhos como:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;set-cookie
authorization
x-github-request-id
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Antes de publicar logs em blogs, fóruns ou issues, remova:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;cookies;&lt;/li&gt;
&lt;li&gt;tokens;&lt;/li&gt;
&lt;li&gt;cabeçalhos de autenticação;&lt;/li&gt;
&lt;li&gt;e-mails;&lt;/li&gt;
&lt;li&gt;nomes de usuário desnecessários;&lt;/li&gt;
&lt;li&gt;caminhos privados;&lt;/li&gt;
&lt;li&gt;IDs de sessão;&lt;/li&gt;
&lt;li&gt;URLs assinadas.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Para documentação pública, normalmente basta mostrar:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;HTTP/2 200
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ou a mensagem específica de erro.&lt;/p&gt;




&lt;h2&gt;
  
  
  Resumo da solução
&lt;/h2&gt;

&lt;p&gt;A sequência que resolveu o problema foi:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;code ~/.codex/config.toml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Adicionar:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="nn"&gt;[features]&lt;/span&gt;
&lt;span class="py"&gt;plugins&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
&lt;span class="py"&gt;remote_plugin&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Encerrar os processos:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pkill &lt;span class="nt"&gt;-f&lt;/span&gt; codex &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;true
&lt;/span&gt;pkill &lt;span class="nt"&gt;-f&lt;/span&gt; &lt;span class="s1"&gt;'/usr/share/code/code'&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Remover clones temporários:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;find ~/.codex/.tmp &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-maxdepth&lt;/span&gt; 1 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-type&lt;/span&gt; d &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-name&lt;/span&gt; &lt;span class="s1"&gt;'plugins-clone-*'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-print&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-exec&lt;/span&gt; &lt;span class="nb"&gt;rm&lt;/span&gt; &lt;span class="nt"&gt;-rf&lt;/span&gt; &lt;span class="nt"&gt;--&lt;/span&gt; &lt;span class="o"&gt;{}&lt;/span&gt; + &lt;span class="se"&gt;\&lt;/span&gt;
  2&amp;gt;/dev/null
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Abrir novamente:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;code
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Depois, como estabilização de rede:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-q&lt;/span&gt; &lt;span class="s1"&gt;'^precedence ::ffff:0:0/96  100$'&lt;/span&gt; /etc/gai.conf &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'precedence ::ffff:0:0/96  100'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  | &lt;span class="nb"&gt;sudo tee&lt;/span&gt; &lt;span class="nt"&gt;-a&lt;/span&gt; /etc/gai.conf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl restart NetworkManager
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Validar:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;getent ahostsv4 chatgpt.com
getent ahostsv4 github.com
getent ahostsv4 api.github.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-4&lt;/span&gt; &lt;span class="nt"&gt;-I&lt;/span&gt; &lt;span class="nt"&gt;--connect-timeout&lt;/span&gt; 15 https://api.github.com
curl &lt;span class="nt"&gt;-4&lt;/span&gt; &lt;span class="nt"&gt;-I&lt;/span&gt; &lt;span class="nt"&gt;--connect-timeout&lt;/span&gt; 15 https://github.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git ls-remote https://github.com/openai/plugins.git HEAD
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Conclusão
&lt;/h2&gt;

&lt;p&gt;O ponto mais enganoso desse problema era visual.&lt;/p&gt;

&lt;p&gt;A extensão não apresentava uma tela explícita de falha: a interface simplesmente não carregava.&lt;/p&gt;

&lt;p&gt;Os logs mostraram que o Codex estava falhando durante operações de sincronização de plugins. A recuperação exigiu desativar temporariamente essa camada, encerrar completamente os processos locais e remover clones temporários.&lt;/p&gt;

&lt;p&gt;Separadamente, os testes revelaram uma rota IPv6 quebrada, enquanto o IPv4 permanecia funcional. Priorizar IPv4 reduziu o risco de novos timeouts.&lt;/p&gt;

&lt;p&gt;A principal lição foi não tratar uma interface vazia como simples falha visual do VS Code. Nesse caso, o problema estava no fluxo de inicialização do processo local do Codex e nas dependências de rede acionadas durante a sincronização de plugins.&lt;/p&gt;

&lt;h2&gt;
  
  
  Referências técnicas
&lt;/h2&gt;

&lt;p&gt;A documentação oficial confirma que a extensão do VS Code é alimentada pelo &lt;code&gt;Codex app-server&lt;/code&gt; e que CLI e extensão compartilham as configurações de &lt;code&gt;~/.codex/config.toml&lt;/code&gt;. A referência de configuração também documenta &lt;code&gt;features.remote_plugin&lt;/code&gt;, enquanto o repositório oficial registra problemas recentes relacionados à sincronização e aos diretórios temporários de plugins. &lt;/p&gt;

</description>
      <category>linux</category>
      <category>vscode</category>
      <category>openai</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
