Home Linux CI now runs successfully with portable platform checks, bounded test
memory and deterministic asynchronous test waits. Published release versions and
changelog entries are connected to the landing page.
Chat-registry caches invalidate when file permissions or ownership change,
even when the filesystem reports the same modification and change timestamps.
gatefox chats migrate --apply is blocked only by processes on the same Codex home: an
engine with another CODEX_HOME (such as Mission Runtime's ~/.codex-primary), a test
run, or an inference-only gateway serve no longer stops it. A process without
CODEX_HOME counts as ~/.codex.
GitHub release ↗Download for Mac
- The app shows GateFox once in the sidebar, with Harness Gateway beneath it.
The window title text is hidden and the footer shows only the version.
GitHub release ↗Download for Mac
- A cancelled Claude turn whose interrupt times out no longer blocks the chat for
an hour. Gateway deliberately closes that CLI and permits a new session on the
next caller request, subject to the cache guard. Genuine crashes still keep
their replay holds, and the cancelled request is never replayed automatically.
GitHub release ↗Download for Mac
The package is @edihasaj/gatefox. The installer and app builder still accept a backend
packaged as @edihasaj/harness-gateway or @edihasaj/subscription-gateway. The Claude
Desktop help and errors, the Grok config marker (an old marker is replaced, never
duplicated), the native app's type and Swift package, and the README now say GateFox.
The README links the 1.8.0 GateFox download.
gatefox chats migrate moves saved gateway chats from the provider id
subscription_gateway to gatefox. Without --apply it only reports. With --apply
it needs ChatGPT and the service stopped, rewrites the provider in each rollout's
first line (including the engine's compressed .zst rollouts), copies
state_5.sqlite, then moves the chat rows. --revert moves them back. Both ids stay
registered.
The app's rename to GateFox.app leaves Harness Gateway.app as a link to it. launchd
keeps the loaded service's old program path until the next login, and the service plan
stores the old app's Node path for the Claude components; without the link, a service
restart failed with exit 78 and the Claude adapter could not start until the next login.
GitHub release ↗Download for Mac
A Claude chat whose login fails before any reply, tool result or queued message no
longer stays blocked behind a crash hold. The next request tries the saved login again.
A failure after the turn produced output keeps the hold, because the turn may have
advanced. See docs/claude-sessions.md.
A Claude chat whose login fails before any reply, tool result or queued message no
longer stays blocked behind a crash hold. The next request tries the saved login again.
A failure after the turn produced output keeps the hold, because the turn may have
advanced. See docs/claude-sessions.md.
The app is GateFox.app, published as GateFox-VERSION-macos-arm64.zip with
gatefox-VERSION-macos-arm64.tar.gz, under the standard vVERSION tag only. A Mac
updated from 1.7.x first gets the new app at its old Harness Gateway.app path; at its
next launch the app renames itself to GateFox.app beside it, relaunches, and moves
the service and the command-line runtime to the new path. Permissions stay, because
the bundle identifier and signature are unchanged. The rename waits while an update is
unfinished. See docs/macos-updates.md.
The installer also writes a gatefox command, with the same contents as
harness-gateway and gateway, which keep working. An update run by a 1.7.x app adds
it at the next install, because that updater refuses receipts it does not know.
Fresh installations use ~/.local/share/gatefox and
~/Library/Application Support/GateFox (~/.config/gatefox on Linux). A Mac installed
earlier keeps its subscription-gateway folders; nothing moves. The signed service
launcher, the updater, uninstall and the app accept both.
The Claude Desktop profile and the ChatGPT sign-in agent are named GateFox. A profile
created as Harness Gateway is still selected.
After a service restart, a desktop, relay session or SSH listener no longer takes the
native ChatGPT engine away from the gateway host. The new host's claim could lose to the
old host that was still exiting; the next client then started its own private engine, and
every later client joined it, so rollout stayed native_owner_pending until every client
disconnected. While no private engines hold the native home, a refused client now asks
the host again for up to 20 seconds instead.
New gateway chats are recorded with the provider id gatefox. Chats saved earlier keep
subscription_gateway, which every engine still registers and every list still shows,
so nothing needs reopening. gateway desktop register publishes a native row for both
ids, so ChatGPT's own engine opens either. The native-config guard refuses both ids.
Executors carry GATEFOX_EXECUTOR (and the older marker). The patched SDK is
gateway-executor-v4. See docs/harness-identity.md and docs/gatefox-rename.md.
gatefox.dev has search and sharing metadata on every page: canonical URLs, Open Graph
and Twitter cards with a share image per page, JSON-LD, robots.txt, a sitemap with
images and a web manifest. The deploy adds the IndexNow key file.
GitHub release ↗Download for Mac
- Macs that share the native ChatGPT engine can share the Codex 0.167.0-alpha.3.2 app
engine again. It passed every stdio and Unix shared-native check, with and without
an explicit host engine path. Until now such a Mac stayed
native_owner_pending
and ran native chats in private engines.
GitHub release ↗Download for Mac
- The remote relay accepts the Codex 0.167.0-alpha.3.2 app engine that ChatGPT
26.1103.41825 shipped on 8 November. The installed relay refused it after a service
restart and paused as
failing, so the phone could not reach that Mac. Its
remote-control transport, state migrations and auth.json format are unchanged from
the admitted 0.166.0-alpha.6. Native sharing on the host still waits for its own check.
GitHub release ↗Download for Mac
The app updater now also accepts standard vVERSION release tags and the GateFox
release names (GateFox-VERSION-macos-arm64.zip holding GateFox.app, and
gatefox-VERSION-macos-arm64.tar.gz). A release must carry app-update.json to
count as an app update, so command-line-only releases are ignored. This prepares
the 1.8.0 rename; 1.7.6 itself keeps the Harness Gateway names.
A public roadmap lists the next steps for contributors: the
Claude apps, DeepSeek, and a Chat Completions ingress for other harnesses, each
with a GitHub issue.
The project is now GateFox (https://gatefox.dev, edihasaj/gatefox). The app's
window, Dock and menu name, permission prompts and update messages say GateFox.
The app file stays Harness Gateway.app for now, and the bundle ID, service
labels, folders, Codex provider ID and Claude Desktop profile name are unchanged,
so installed Macs and their updates keep working.
The README and the guide now start with a single-Mac setup: install, connect your
accounts, start the service. Adding more Macs is a separate, optional chapter. The
long README moved to docs/cli.md, and docs/reference.html is a new searchable
index of every doc, generated from each page's summary by npm run docs:site and
checked by npm run check.
GitHub release ↗Download for Mac