Skip to content

[bug] Menu bar icon is created off-screen on external display, cannot be repositioned, and app bundle mutates after launch #342

@treygoff24

Description

@treygoff24

Menu bar icon is created off-screen on external display, cannot be repositioned, and app bundle mutates after launch

Hi, I am seeing a repeatable issue where VibeProxy is running and functional, but its menu bar icon is not visible in the menu bar. The app is not crashing. The backend is healthy. The problem appears to be the status item placement.

This started as "VibeProxy will not launch from Spotlight or Applications", but after digging in, the app was launching correctly as a menu-bar-only app. It just was not visible.

Summary

VibeProxy creates an NSStatusItem, but macOS reports the status item at the far-right edge of the main display, effectively clipped or off-screen:

AXPosition=3165,-1
AXSize=36,24
AXRole=AXMenuBarItem
AXSubrole=AXMenuExtra
AXRoleDescription=status menu

The display is a 6400x3600 external monitor scaled to 3200x1800 logical points, so x=3165 is basically the far-right edge. There is plenty of empty menu bar space on the display. This is not normal overflow from too many menu bar items.

The app is otherwise running:

/Applications/VibeProxy.app/Contents/MacOS/CLIProxyMenuBar
/Applications/VibeProxy.app/Contents/Resources/cli-proxy-api-plus -config /Applications/VibeProxy.app/Contents/Resources/config.yaml

The API is healthy:

$ curl http://127.0.0.1:8318/
{"endpoints":["POST /v1/chat/completions","POST /v1/completions","GET /v1/models"],"message":"CLI Proxy API Server"}

The thinking proxy is also listening on 8317.

Environment

VibeProxy version:

1.8.138

CLIProxyAPIPlus version from bundled binary:

CLIProxyAPI Version: 6.9.28-0-plus
Commit: 0c48ef58
BuiltAt: 2026-04-16T17:45:03Z

macOS:

26.4.1, build 25E253

Display setup:

Resolution: 6400 x 3600
UI Looks like: 3200 x 1800 @ 165.00Hz
Main Display: Yes

Resolution: 2160 x 3840
UI Looks like: 1080 x 1920 @ 100.00Hz
Online: Yes

Installed app path:

/Applications/VibeProxy.app

Bundle identifier:

com.vibeproxy.app

Expected behavior

When VibeProxy is running, I expect its menu bar icon to be visible somewhere in the menu bar and movable with the normal Command-drag gesture, like other status items.

Actual behavior

VibeProxy is running, but the visible menu bar icon is missing. Accessibility shows that the status item exists, but it is positioned at the far-right edge of the logical display:

menu bar 2 item count=1
  item 1 title= desc=status menu pos=3165-1 size=3624 enabled=true

AppleScript/Accessibility attribute dump:

AXEnabled=true
AXFrame=3165-1320123
AXSize=3624
AXFocused=false
AXRole=AXMenuBarItem
AXTopLevelUIElement=missing value
AXHelp=missing value
AXPosition=3165-1
AXTitle=
AXWindow=missing value
AXRoleDescription=status menu
AXSelected=false
AXSubrole=AXMenuExtra

The item is still clickable through Accessibility, and the VibeProxy menu opens. So the app is alive and the status item exists. It just is not visibly placed in the menu bar.

Menu contents when clicked through Accessibility:

Server: Running (port 8317)
Open Settings
Stop Server
Copy Server URL
Open Dashboard
Check for Updates...
Quit

Things I tried

1. Checked whether an update was available

The app says it is current. The appcast also shows 1.8.138 as latest:

https://raw.githubusercontent.com/automazeio/vibeproxy/main/appcast.xml

Latest item:
Version 1.8.138
pubDate: Fri, 17 Apr 2026 00:22:31 +0000

2. Restarted SystemUIServer and VibeProxy

I quit VibeProxy, restarted SystemUIServer, relaunched VibeProxy, then checked the status item again.

The app relaunched cleanly, but the status item stayed at the same coordinate:

pos=3165,-1
size=36,24

3. Tried normal menu bar repositioning

I tried Command-dragging the status item left using a controlled synthetic drag from the reported hitbox. I tried it twice, including a version that sent separate Command key down/up events. The status item did not move.

After the drag attempt:

pos=3165,-1
size=36,24

4. Tried setting the AX position directly

I tried setting the position through Accessibility. The call did not error, but macOS ignored the requested position:

set position succeeded: before=3165,-1 after=3165,-1

5. Clean-reinstalled VibeProxy 1.8.138

I downloaded the latest release from the appcast URL:

https://github.com/automazeio/vibeproxy/releases/download/v1.8.138/VibeProxy-arm64.zip

SHA256 of downloaded zip:

f05b269248eb25f5fcad7b7b8018e9953382f618bf226bb47ba8ab488a3d1b5a

I quit the running app, moved the existing app aside as a backup, installed the fresh app into /Applications, and verified it before launch.

Fresh app before launch:

/Applications/VibeProxy.app: valid on disk
/Applications/VibeProxy.app: satisfies its Designated Requirement
/Applications/VibeProxy.app: accepted
source=Notarized Developer ID

After relaunch, VibeProxy ran successfully, but the status item placement bug persisted:

menu bar 2 item count=1
  item 1 title= desc=status menu pos=3165-1 size=3624 enabled=true

Separate suspicious observation: app bundle changes after launch

After the clean reinstall, the app bundle verified as valid before launch. After launching VibeProxy and letting the backend start, codesign began reporting that the app bundle had been modified:

/Applications/VibeProxy.app: a sealed resource is missing or invalid
file added: /Applications/VibeProxy.app/Contents/Resources/static/management.html

That file was not present as a signed resource immediately after install, or at least the freshly installed bundle verified cleanly before launch. After launch, it appears that something is adding:

/Applications/VibeProxy.app/Contents/Resources/static/management.html

This may be unrelated to the menu bar placement bug, but it seems worth mentioning because it invalidates the app signature after launch.

Why I think this is a VibeProxy issue, not normal macOS menu bar overflow

There is plenty of empty space in the menu bar on the main external display; I have a 32" monitor and most of the menu bar is empty. The icon is not merely hidden because of crowding.

Also, the app is clearly creating a status item, and the item can be clicked through Accessibility. It is just being placed at the far-right edge with y=-1, and it resists the normal Command-drag repositioning flow.

The visible two-toggle icon near the clock is macOS Control Center, not VibeProxy. I confirmed VibeProxy's bundled inactive icon is the gray/white "A/rocket" shape from:

/Applications/VibeProxy.app/Contents/Resources/icon-inactive.png

That icon is not visible in the menu bar.

What would help

A few things that might make this easier to debug or fix:

  1. Give the status item a stable autosave name if it does not already have one, so macOS can persist and reset placement more reliably.
  2. Add a "reset menu bar icon position" command or fallback path.
  3. Avoid writing generated assets into VibeProxy.app/Contents/Resources after install, since that invalidates the app signature.
  4. If the status item is using a variable or unusual length, check whether it is interacting badly with scaled external displays or multi-display menu bars.

Happy to provide more logs or run a debug build if useful.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions