Token management is fully automatic. The server monitors, refreshes, and reloads your token without any intervention required on your part.
Token status display
While the server is running, you will see a token status line in the terminal every 60 seconds (configurable). The status includes a visual indicator, the time remaining, and the exact expiration time.| Icon | Condition | Time remaining |
|---|---|---|
| ✅ | Fresh token | More than 15 minutes |
| 📊 | Expiring soon | 5–15 minutes |
| ⚠️ | Expiring very soon | Less than 5 minutes — auto-refresh triggers |
Automatic token refresh
When the token is within 5 minutes of expiring (configurable viaZOOM_AUTO_REFRESH_THRESHOLD), the server automatically runs a refresh sequence. You will see the following output in your terminal:
Fetch a new token
Runs
get_zoom_token.sh to request a fresh token from the Zoom API and write it to .env.Load the new token into memory
Reloads the updated
.env file and clears the cached token so the server uses the new one immediately.Update Claude Desktop config
Runs
update_claude_config.sh to inject the new ZOOM_ACCESS_TOKEN into the Claude Desktop configuration file.Restart Claude Desktop
Runs
restart_claude_app.sh to restart Claude so it picks up the updated configuration.Anti-loop safeguards
The server includes protections to prevent a failing refresh from causing a restart loop:- 30-second cooldown between refresh attempts — if a refresh is triggered while another is still within its cooldown window, the server waits before retrying.
- Auto-refresh disabled after 3 consecutive failures — if the refresh fails three times in a row, the server stops attempting automatic refreshes to prevent repeated Claude restarts.
Customizing token monitoring
You can adjust token monitoring behavior using environment variables set before launching the server.| Variable | Default | Description |
|---|---|---|
ZOOM_TOKEN_DISPLAY_INTERVAL | 60 | How often (in seconds) the token status line appears. Set to 0 to disable the periodic display. |
ZOOM_AUTO_REFRESH_THRESHOLD | 300 | Seconds before expiration at which auto-refresh triggers (default: 5 minutes). |
ZOOM_TOKEN_THRESHOLD | 60 | Refresh threshold used by check_zoom_token.sh (default: 60 seconds). |