[Beeper Desktop] OAuth PKCE authentication fails with invalid_request
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 7.8k
- Forks
- 6.9k
- Avg merge
- 2d 6h
- Merged PRs (30d)
- 442
Description
Extension
https://www.raycast.com/automattic/beeper
Raycast Version
1.104.18
OS Version
macOS 15.7.3 (24G419)
Description
The Beeper Desktop extension's OAuth (PKCE) flow is broken. When a user attempts to sign in, the browser opens the local Beeper authorize endpoint but immediately redirects back to https://raycast.com/redirect... with error=invalid_request, without ever showing the approval/consent screen in Beeper Desktop.
This happens consistently with:
- The magic
client_id=raycast-beeper-extension - Dynamically registered clients (via
POST /oauth/register)
Multiple redirect URI variations were tested, including:
https://raycast.com/redirect?packageName=Extensionhttps://raycast.com/redirect/extension
All result in the same immediate invalid_request error.
- Beeper Desktop version: 4.2.860
- Dynamic client registration (
/oauth/register) succeeds and returns a validclient_id, but the subsequent/oauth/authorizecall is still rejected by Beeper. - The root cause appears to be on Beeper’s side (strict validation or allow-list issues for Raycast’s Web redirect method).
Recommendation :
- A
manualTokenpreference was implemented in the extension as a necessary workaround so users are not blocked.
Steps To Reproduce
- Install the Beeper Desktop extension.
- Run any command requiring authentication (e.g. "Recent Chats").
- The extension initiates OAuth using Raycast's
OAuth.PKCEClientwith Web redirect. - The browser opens an authorize URL against
http://localhost:23373/oauth/authorize. - Beeper immediately returns
error=invalid_requestin the redirect back to Raycast. - No approval screen is shown in Beeper Desktop.
- The extension remains unauthenticated.
Current Behaviour
- OAuth PKCE flow fails immediately with
error=invalid_request. - Users never reach Beeper’s consent/approval UI.
- The only reliable way to authenticate is by manually creating a token in Beeper Desktop and pasting it into the extension preferences.
- Partial successes in the past have created multiple duplicate "Raycast Beeper Extension" entries under Approved Connections.
Expected Behaviour
The OAuth flow should successfully reach Beeper Desktop’s approval screen (or complete the PKCE handshake without an immediate invalid_request), allowing users to authenticate the extension normally.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the Beeper Desktop extension's OAuth.PKCEClient Web redirect flow and reproduce the request to the local /oauth/authorize endpoint after registering a client with /oauth/register. Compare the redirect URI and client parameters against the reported invalid_request response; done means the flow reaches Beeper's approval screen and completes the PKCE handshake without requiring manualToken.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- api, authentication, desktop
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Needs clarification
- Newbie friendliness
- 30/100