Skip to content

Replace localhost with 127.0.0.1 for correct Codex handshake#1057

Closed
hvesuk wants to merge 2 commits into
CoplayDev:betafrom
hvesuk:fix/codex-handshake
Closed

Replace localhost with 127.0.0.1 for correct Codex handshake#1057
hvesuk wants to merge 2 commits into
CoplayDev:betafrom
hvesuk:fix/codex-handshake

Conversation

@hvesuk
Copy link
Copy Markdown
Contributor

@hvesuk hvesuk commented Apr 11, 2026

Description

  • update Codex HTTP MCP config generation to use 127.0.0.1 instead of localhost

Why

In practice, Unity MCP was reachable and responded correctly, but Codex could fail during the MCP initialize/handshake step when configured with http://localhost:8080/mcp.

Using http://127.0.0.1:8080/mcp fixes the issue consistently after restarting Codex, which suggests the problem is client-side loopback/hostname resolution behavior in Codex rather than a Unity MCP server issue.

Type of Change

Save your change type

  • Bug fix (non-breaking change that fixes an issue)
  • Refactoring (no functional changes)

Changes Made

  • update Codex HTTP MCP config generation to use 127.0.0.1 instead of localhost
  • keep the change scoped to CodexConfigHelper only
  • leave the shared HTTP endpoint logic unchanged for other clients

Testing/Screenshots/Recordings

  • enable HTTP transport for Codex config generation

  • verify generated TOML contains:

    [mcp_servers.unityMCP]
    url = "http://127.0.0.1:8080/mcp"

  • restart Codex

  • confirm Codex connects to Unity MCP successfully

  • confirm no behavior changes for non-Codex clients

Documentation Updates

  • I have added/removed/modified tools or resources
  • If yes, I have updated all documentation files using:
    • The LLM prompt at tools/UPDATE_DOCS_PROMPT.md (recommended)
    • Manual updates following the guide at tools/UPDATE_DOCS.md

Related Issues

Additional Notes

Summary by Sourcery

Update Codex HTTP MCP configuration generation to use a loopback IP address that ensures reliable Codex handshakes.

Bug Fixes:

  • Ensure Codex connects reliably to Unity MCP by avoiding hostname resolution issues when using HTTP transport.

Enhancements:

  • Introduce a Codex-specific HTTP URL helper to adjust the generated MCP RPC URL without affecting other clients.

Summary by CodeRabbit

  • Bug Fixes
    • Normalize loopback hostnames by replacing "localhost" with "127.0.0.1" when configuring HTTP/SSE endpoints.
    • Apply this normalization consistently across HTTP transport configuration paths so generated URLs use the loopback IP.
    • No behavior changes for stdio transport.

@sourcery-ai
Copy link
Copy Markdown
Contributor

sourcery-ai Bot commented Apr 11, 2026

Reviewer's guide (collapsed on small PRs)

Reviewer's Guide

Adjusts Codex-specific MCP HTTP URL generation to use 127.0.0.1 instead of localhost while keeping shared HTTP endpoint logic unchanged for other clients.

Class diagram for updated CodexConfigHelper HTTP URL generation

classDiagram
  class CodexConfigHelper {
    +string BuildCodexServerBlock(string uvPath)
    -TomlTable CreateUnityMcpTable(string uvPath)
    -string GetCodexHttpUrl()
  }

  class HttpEndpointUtility {
    +string GetMcpRpcUrl()
  }

  class TomlTable
  class TomlString {
    +string Value
  }

  CodexConfigHelper --> HttpEndpointUtility : uses
  CodexConfigHelper --> TomlTable : creates
  CodexConfigHelper --> TomlString : sets_url_value
Loading

File-Level Changes

Change Details Files
Use a Codex-specific helper to generate the MCP HTTP URL with 127.0.0.1 instead of localhost.
  • Replace direct calls to the shared HTTP endpoint URL helper with a Codex-specific URL helper when building Codex MCP TOML blocks.
  • Ensure the generated Codex MCP HTTP URL rewrites the localhost host to 127.0.0.1 via string replacement.
  • Scope the hostname rewrite logic to Codex config generation only, without modifying the shared HttpEndpointUtility behavior.
MCPForUnity/Editor/Helpers/CodexConfigHelper.cs

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Apr 11, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: c08b9c59-6547-4090-9a37-54974a112f0d

📥 Commits

Reviewing files that changed from the base of the PR and between 3ac2f06 and f4521f7.

📒 Files selected for processing (1)
  • MCPForUnity/Editor/Helpers/CodexConfigHelper.cs
🚧 Files skipped from review as they are similar to previous changes (1)
  • MCPForUnity/Editor/Helpers/CodexConfigHelper.cs

📝 Walkthrough

Walkthrough

Added a private helper GetCodexHttpUrl() that derives the HTTP endpoint from HttpEndpointUtility.GetMcpRpcUrl() and rewrites loopback hostnames (http://localhost:http://127.0.0.1:). BuildCodexServerBlock and CreateUnityMcpTable now use this helper for HTTP/SSE transport URL population; stdio transport unchanged.

Changes

Cohort / File(s) Summary
URL Rewriting Helper
MCPForUnity/Editor/Helpers/CodexConfigHelper.cs
Added GetCodexHttpUrl() to normalize localhost URLs to 127.0.0.1. Replaced direct HttpEndpointUtility.GetMcpRpcUrl() usage with the helper when setting unityMCP["url"] in BuildCodexServerBlock and CreateUnityMcpTable. No stdio transport changes.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

  • Update to support Codex CLI #325: Modifies BuildCodexServerBlock in CodexConfigHelper.cs and related TOML/env construction; strong overlap in the same helper and TOML population logic.

Suggested reviewers

  • msanatan

Poem

🐰 I hop through code, change one small part,
Turning "localhost" into a numeric heart.
A tiny rewrite, silent and neat,
Configured endpoints now safely greet. 🥕

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 33.33% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and specifically describes the main change: replacing localhost with 127.0.0.1 for Codex handshake functionality.
Description check ✅ Passed The description covers all key sections: rationale, type of change, specific changes made, testing performed, and documentation status, providing sufficient context for review.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@sourcery-ai sourcery-ai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - I've found 1 issue, and left some high level feedback:

  • GetCodexHttpUrl relies on a string.Replace of the hard-coded prefix "http://localhost:"; consider parsing the URI (e.g., via Uri) and forcing the host to 127.0.0.1 so you correctly handle https, alternate schemes, or any future change to the base URL format.
  • If Codex has the same handshake issue over https, you may want GetCodexHttpUrl to normalize any localhost host (regardless of scheme) to 127.0.0.1 rather than only matching the specific http://localhost: prefix.
Prompt for AI Agents
Please address the comments from this code review:

## Overall Comments
- GetCodexHttpUrl relies on a string.Replace of the hard-coded prefix "http://localhost:"; consider parsing the URI (e.g., via Uri) and forcing the host to 127.0.0.1 so you correctly handle https, alternate schemes, or any future change to the base URL format.
- If Codex has the same handshake issue over https, you may want GetCodexHttpUrl to normalize any `localhost` host (regardless of scheme) to 127.0.0.1 rather than only matching the specific `http://localhost:` prefix.

## Individual Comments

### Comment 1
<location path="MCPForUnity/Editor/Helpers/CodexConfigHelper.cs" line_range="232-235" />
<code_context>
             return unityMCP;
         }

+        private static string GetCodexHttpUrl()
+        {
+            return HttpEndpointUtility.GetMcpRpcUrl()
+                .Replace("http://localhost:", "http://127.0.0.1:");
+        }
+
</code_context>
<issue_to_address>
**suggestion (bug_risk):** Make the localhost-to-127.0.0.1 conversion more robust (https, non-prefix matches, future changes).

This relies on `HttpEndpointUtility.GetMcpRpcUrl()` always returning `http://localhost:<port>`. If it ever returns `https://localhost:...` or `localhost` appears elsewhere in the URL, this string replace may fail or corrupt the URL. Instead, parse the URL with `Uri`, check that `Host == "localhost"`, and rebuild it with `Host = "127.0.0.1"` while preserving the original scheme, port, path, and query to avoid these assumptions.

Suggested implementation:

```csharp
        private static string GetCodexHttpUrl()
        {
            var rawUrl = HttpEndpointUtility.GetMcpRpcUrl();

            if (string.IsNullOrWhiteSpace(rawUrl))
            {
                return rawUrl;
            }

            if (!Uri.TryCreate(rawUrl, UriKind.Absolute, out var uri))
            {
                // If parsing fails, don't try to be clever – just return the original value
                return rawUrl;
            }

            if (!string.Equals(uri.Host, "localhost", StringComparison.OrdinalIgnoreCase))
            {
                // Only rewrite when the host is actually localhost
                return rawUrl;
            }

            var builder = new UriBuilder(uri)
            {
                Host = "127.0.0.1"
            };

            return builder.Uri.ToString();
        }

```

If `System` is not already imported at the top of `CodexConfigHelper.cs`, add `using System;` so that `Uri`, `UriBuilder`, and `StringComparison` resolve correctly.
</issue_to_address>

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

Comment on lines +232 to +235
private static string GetCodexHttpUrl()
{
return HttpEndpointUtility.GetMcpRpcUrl()
.Replace("http://localhost:", "http://127.0.0.1:");
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

suggestion (bug_risk): Make the localhost-to-127.0.0.1 conversion more robust (https, non-prefix matches, future changes).

This relies on HttpEndpointUtility.GetMcpRpcUrl() always returning http://localhost:<port>. If it ever returns https://localhost:... or localhost appears elsewhere in the URL, this string replace may fail or corrupt the URL. Instead, parse the URL with Uri, check that Host == "localhost", and rebuild it with Host = "127.0.0.1" while preserving the original scheme, port, path, and query to avoid these assumptions.

Suggested implementation:

        private static string GetCodexHttpUrl()
        {
            var rawUrl = HttpEndpointUtility.GetMcpRpcUrl();

            if (string.IsNullOrWhiteSpace(rawUrl))
            {
                return rawUrl;
            }

            if (!Uri.TryCreate(rawUrl, UriKind.Absolute, out var uri))
            {
                // If parsing fails, don't try to be clever – just return the original value
                return rawUrl;
            }

            if (!string.Equals(uri.Host, "localhost", StringComparison.OrdinalIgnoreCase))
            {
                // Only rewrite when the host is actually localhost
                return rawUrl;
            }

            var builder = new UriBuilder(uri)
            {
                Host = "127.0.0.1"
            };

            return builder.Uri.ToString();
        }

If System is not already imported at the top of CodexConfigHelper.cs, add using System; so that Uri, UriBuilder, and StringComparison resolve correctly.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@MCPForUnity/Editor/Helpers/CodexConfigHelper.cs`:
- Around line 232-236: GetCodexHttpUrl currently uses string.Replace on the raw
URL from HttpEndpointUtility.GetMcpRpcUrl(), which fails when the scheme changes
(e.g., https) or the host appears in different forms; instead parse the value
returned by HttpEndpointUtility.GetMcpRpcUrl() into a System.Uri (or
UriBuilder), detect if the host is "localhost" or IPLoopback, and if so set the
host to "127.0.0.1" while preserving scheme, port, path and query, then return
the rebuilt URL string; update GetCodexHttpUrl to use Uri/UriBuilder logic and
handle exceptions/fallbacks to the original string from
HttpEndpointUtility.GetMcpRpcUrl().
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 281bc350-08c6-4e43-a6ee-3d095a854a10

📥 Commits

Reviewing files that changed from the base of the PR and between 6948193 and 3ac2f06.

📒 Files selected for processing (1)
  • MCPForUnity/Editor/Helpers/CodexConfigHelper.cs

Comment on lines +232 to +236
private static string GetCodexHttpUrl()
{
return HttpEndpointUtility.GetMcpRpcUrl()
.Replace("http://localhost:", "http://127.0.0.1:");
}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== Locate HttpEndpointUtility and inspect URL construction =="
fd -a "HttpEndpointUtility.cs" | while read -r f; do
  echo "--- $f ---"
  rg -n -C3 'GetBaseUrl|GetMcpRpcUrl|localhost|https|Uri|port' "$f"
done

echo
echo "== Find localhost URL patterns and transport-related usage across C# files =="
rg -n -C2 --type=cs 'http://localhost|https://localhost|GetMcpRpcUrl\(|UseHttpTransport'

Repository: CoplayDev/unity-mcp

Length of output: 50375


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "=== Inspect CodexConfigHelper.cs GetCodexHttpUrl method ==="
fd -a "CodexConfigHelper.cs" | while read -r f; do
  echo "--- $f (lines 230-250) ---"
  sed -n '230,250p' "$f"
done

echo
echo "=== Inspect HttpEndpointUtility GetLocalBaseUrl and GetRemoteBaseUrl ==="
fd -a "HttpEndpointUtility.cs" | while read -r f; do
  echo "--- GetLocalBaseUrl method ---"
  sed -n '33,90p' "$f"
  echo
  echo "--- GetRemoteBaseUrl method ---"
  sed -n '103,130p' "$f" 2>/dev/null || echo "(not in expected range)"
done

echo
echo "=== Check for HTTPS usage with localhost ==="
rg -n 'https.*localhost|localhost.*https' --type=cs -i

echo
echo "=== Check what AppendPathSegment does ==="
rg -n -A10 'AppendPathSegment' --type=cs | head -30

Repository: CoplayDev/unity-mcp

Length of output: 4312


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "=== Find DefaultLocalBaseUrl and DefaultRemoteBaseUrl constants ==="
rg -n 'DefaultLocalBaseUrl|DefaultRemoteBaseUrl|LocalPrefKey|RemotePrefKey' --type=cs | head -20

echo
echo "=== Find NormalizeBaseUrl implementation ==="
rg -n -A30 'private static string NormalizeBaseUrl' --type=cs

echo
echo "=== Check what schemes are assigned in the normalization process ==="
rg -n 'http:|https:' --type=cs -C2 | grep -A2 -B2 'scheme\|http://'  | head -40

Repository: CoplayDev/unity-mcp

Length of output: 10211


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "=== Search for GetCodexHttpUrl usage ==="
rg -n 'GetCodexHttpUrl' --type=cs

echo
echo "=== Context around CodexConfigHelper GetCodexHttpUrl and its callers ==="
fd -a "CodexConfigHelper.cs" | while read -r f; do
  echo "--- Full context (lines 220-250) ---"
  sed -n '220,250p' "$f"
done

echo
echo "=== Check if localhost ever appears in remote scope settings ==="
rg -n 'HttpRemoteBaseUrl|RemoteBaseUrl.*localhost' --type=cs

echo
echo "=== Find any tests for CodexConfigHelper ==="
fd -a "*CodexConfigHelper*Test*" --type f

Repository: CoplayDev/unity-mcp

Length of output: 4263


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "=== Context of GetCodexHttpUrl calls at lines 39 and 194 ==="
fd -a "CodexConfigHelper.cs" | while read -r f; do
  echo "--- Lines 30-50 (first call at 39) ---"
  sed -n '30,50p' "$f"
  echo
  echo "--- Lines 185-205 (second call at 194) ---"
  sed -n '185,205p' "$f"
done

echo
echo "=== Check if GetCodexHttpUrl result is only used for local scope ==="
fd -a "CodexConfigHelper.cs" | while read -r f; do
  echo "--- Full method context around GetCodexHttpUrl calls ---"
  sed -n '25,75p' "$f"
  echo
  sed -n '175,220p' "$f"
done

echo
echo "=== Look for tests of CodexConfigHelper with HTTP URLs ==="
fd -a "CodexConfigHelperTests.cs" | head -1 | xargs -I {} sed -n '460,540p' {}

Repository: CoplayDev/unity-mcp

Length of output: 10227


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "=== Check if IsRemoteScope can be true when useHttpTransport=true ==="
rg -n -B5 -A5 'GetCodexHttpUrl\|GetMcpRpcUrl\|IsRemoteScope' MCPForUnity/Editor/Helpers/CodexConfigHelper.cs | head -30

echo
echo "=== Verify remote scope can use localhost ==="
rg -n 'HttpRemoteBaseUrl|RemoteBaseUrl|IsRemoteScope' MCPForUnity/Editor/Helpers/HttpEndpointUtility.cs | head -20

echo
echo "=== Check actual URL construction for remote scope ==="
fd -a "HttpEndpointUtility.cs" | while read -r f; do
  echo "--- NormalizeBaseUrl with remoteScope examples ---"
  sed -n '312,340p' "$f"
done

Repository: CoplayDev/unity-mcp

Length of output: 132


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "=== Check if IsRemoteScope can be true and what URLs it produces ==="
fd -a "HttpEndpointUtility.cs" | while read -r f; do
  echo "--- GetBaseUrl and IsRemoteScope logic ---"
  sed -n '29,32p' "$f"
  echo
  echo "--- NormalizeBaseUrl remoteScope=true branch (lines 312-340) ---"
  sed -n '312,340p' "$f"
done

echo
echo "=== Check if GetRemoteBaseUrl can return a localhost URL ==="
rg -n 'GetRemoteBaseUrl|DefaultRemoteBaseUrl|RemotePrefKey' MCPForUnity/Editor/Helpers/HttpEndpointUtility.cs | head -15

echo
echo "=== Verify: Can a user configure RemoteBaseUrl with localhost? ==="
rg -n -C3 'SaveRemoteBaseUrl|SetHttpRemoteBaseUrl' --type=cs | head -40

echo
echo "=== Check validation of remote URLs ==="
fd -a "HttpEndpointUtility.cs" | while read -r f; do
  echo "--- ValidateRemoteBaseUrl method ---"
  sed -n '255,290p' "$f"
done

Repository: CoplayDev/unity-mcp

Length of output: 7806


Rewrite localhost URL handling to use URI-based host replacement instead of string replacement.

The current implementation only matches http://localhost: exactly. When the HTTP Remote scope is active and configured with a localhost URL (e.g., localhost:9000), it normalizes to https://localhost:..., which the .Replace() call silently misses.

Suggested fix
 private static string GetCodexHttpUrl()
 {
-    return HttpEndpointUtility.GetMcpRpcUrl()
-        .Replace("http://localhost:", "http://127.0.0.1:");
+    string rawUrl = HttpEndpointUtility.GetMcpRpcUrl();
+    if (!Uri.TryCreate(rawUrl, UriKind.Absolute, out Uri uri))
+    {
+        return rawUrl;
+    }
+
+    if (!string.Equals(uri.Host, "localhost", StringComparison.OrdinalIgnoreCase))
+    {
+        return rawUrl;
+    }
+
+    var builder = new UriBuilder(uri)
+    {
+        Host = "127.0.0.1"
+    };
+
+    return builder.Uri.ToString();
 }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@MCPForUnity/Editor/Helpers/CodexConfigHelper.cs` around lines 232 - 236,
GetCodexHttpUrl currently uses string.Replace on the raw URL from
HttpEndpointUtility.GetMcpRpcUrl(), which fails when the scheme changes (e.g.,
https) or the host appears in different forms; instead parse the value returned
by HttpEndpointUtility.GetMcpRpcUrl() into a System.Uri (or UriBuilder), detect
if the host is "localhost" or IPLoopback, and if so set the host to "127.0.0.1"
while preserving scheme, port, path and query, then return the rebuilt URL
string; update GetCodexHttpUrl to use Uri/UriBuilder logic and handle
exceptions/fallbacks to the original string from
HttpEndpointUtility.GetMcpRpcUrl().

@Scriptwonder
Copy link
Copy Markdown
Collaborator

Hi Alex, thanks for the fix on the Codex issue. Can you add comments on this hard-coded fix, in case Codex in the future route it correctly, and this hard-coded fix becomes an issue?

@hvesuk
Copy link
Copy Markdown
Contributor Author

hvesuk commented Apr 21, 2026

@Scriptwonder I added a comment. Is that enough?

@Scriptwonder Scriptwonder mentioned this pull request Apr 27, 2026
Scriptwonder added a commit that referenced this pull request Apr 27, 2026
  1. fix(#1068): block NuGet System.CodeDom conflict via
  overrideReferences
  2. fix(#1062): add reflection branch for Unity 6.6 InstanceIDToObject
  deprecation
  3. refactor: merge EditorObjectResolver into UnityObjectIdCompat (could
  squash into prev)
  4. fix(#1065): cache McpLogRecord.IsEnabled to allow ThreadPool reads
  5. fix(#1070): emit stdio entry from OpenCodeConfigurator
  6. fix: rewrite localhost→127.0.0.1 in NormalizeBaseUrl (supersedes
  #1057)
@Scriptwonder
Copy link
Copy Markdown
Collaborator

I looked into it more closely and implemented a more generalized solution in #1084; this way, when Codex and other similar clients that are running IPv6 are running local HTTP, it will transform local to 127.0.0.1, all in one place (tested with Windows Codex App). Thanks for submitting and putting in the good work!

@hvesuk
Copy link
Copy Markdown
Contributor Author

hvesuk commented Apr 28, 2026

@Scriptwonder Thanks!

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants