Common issues and how to resolve them. If nothing here matches, open an issue.
Cause: a stale or empty OAuth credential in Claude's MCP client state is short-circuiting the auth flow before it can complete.
Fix:
Quit Claude Code fully first (not just close the window), then run the matching command for your OS. Both scripts back up your credentials to .credentials.backup.json and remove any MCP OAuth entry pointing at Patchline, regardless of whether the server is registered as aria or the legacy patchline-aria.
# macOS / Linux
cp ~/.claude/.credentials.json ~/.claude/.credentials.backup.json && \
jq 'if .mcpOAuth then
.mcpOAuth |= with_entries(
select(
(.key | test("^(aria|patchline-aria)\\|") | not) and
(.value.serverUrl // "" | test("patchline\\.ai/api/mcp/v1") | not)
)
)
else . end' \
~/.claude/.credentials.backup.json > ~/.claude/.credentials.json# Windows PowerShell
$path = "$env:USERPROFILE\.claude\.credentials.json"
Copy-Item $path "$path.backup.json" -Force
$creds = Get-Content $path -Raw | ConvertFrom-Json
if ($creds.mcpOAuth) {
$toRemove = $creds.mcpOAuth.PSObject.Properties |
Where-Object {
$_.Name -match '^(aria|patchline-aria)\|' -or
($_.Value.serverUrl -and $_.Value.serverUrl -match 'patchline\.ai/api/mcp/v1')
} |
ForEach-Object { $_.Name }
foreach ($name in $toRemove) {
$creds.mcpOAuth.PSObject.Properties.Remove($name)
}
$creds | ConvertTo-Json -Depth 20 | Set-Content $path -Encoding UTF8
}Restart Claude Code, run /reload-plugins, approve the Aria MCP server, then ask Aria for anything in plain language (for example get started) to trigger the browser OAuth flow. If something goes wrong, restore the backup: mv ~/.claude/.credentials.backup.json ~/.claude/.credentials.json or Move-Item on Windows.
Cause: the loopback callback fired but the token exchange silently dropped.
Fix: wait 30 seconds, restart Claude, reconnect aria, and retry. If it still fails, clear the stale credential as shown above and retry.
Cause: Cognito rejected the callback URL. Aria should go through https://www.patchline.ai/api/mcp/v1/authorize, which rewrites Claude's random http://localhost:<port>/callback URL to Patchline's registered callback before sending you to Cognito.
Fix: first update or reload the plugin and retry:
/plugin uninstall aria
/plugin marketplace add Patchline-AI/aria
/plugin install aria@patchline-ai
/reload-plugins
Then run /mcp, authenticate plugin:aria:aria, and confirm the authorize URL starts with https://www.patchline.ai/api/mcp/v1/authorize. If the browser still lands on Cognito's redirect_mismatch page, open an issue with both URLs: the Claude authorize URL and the final browser URL.
Look at the error body. Common causes:
UNAUTHENTICATED- session expired. Run/mcpand reconnect.NOT_FOUNDon a catalog tool - you have not added any assets yet. Callget_startedto see your workspace, then add a track (thedropskill /get_asset_upload_link) or import one in the web app.RATE_LIMITED- you hit the streaming-intelligence quota. Retry in 60 seconds.
Cause: the track you are targeting has not completed track analysis yet, so audio features are unavailable.
Fix: upload the master audio via the Patchline web app or finish audio-intake. Playlist matching starts from sonic signatures; without them, matching falls back to genre-only, which is less precise.
You probably forgot the marketplace-add step:
/plugin marketplace add Patchline-AI/aria
/plugin install aria@patchline-ai
Cause: the plugin cache got stale after install or a manual update. Some Claude Code builds do not expose plugin skills as bare slash commands even when the skill can be loaded from natural language.
Fix: run /reload-plugins, then use plain language like get started or drop my new single. If a bare /aria:drop says "unknown command", that is a Claude Code command-surface limitation, not a plugin install failure.
Cause: those clients may surface plugins and skills primarily through natural language instead of slash aliases.
Fix: say what you want in plain language — get started, drop my track, pitch this, make a smart link. Each skill is standalone; slash commands (/aria:drop, etc.) are a fallback, not the primary flow.
Cause: your Claude Code build predates the plugin system (the /plugin and /reload-plugins commands shipped in Claude Code 1.x with plugin support).
Fix: check your version with claude --version and upgrade:
- Homebrew:
brew upgrade claude-code - npm:
npm update -g @anthropic-ai/claude-code - Native installer: re-run the installer from code.claude.com/docs/en/setup
Claude Desktop and Cowork bundle their own Claude Code runtime. Update the Claude Desktop app itself (not just the CLI on your machine) to get current plugin commands inside Cowork. After the update, restart Claude Desktop and retry /reload-plugins.
You do not have to publish a new version to Patchline-AI/aria to try in-progress plugin work. Point Claude Code at a local plugin/ directory as its own marketplace:
/plugin uninstall aria@patchline-ai
/plugin marketplace remove patchline-ai
/plugin marketplace add "<absolute path to your local plugin directory>"
/plugin install aria@patchline-ai
/reload-plugins
Windows example (Claude Code CLI uses forward slashes too):
/plugin marketplace add "C:/Users/<you>/code/patchline/plugin"
After each edit, run /reload-plugins to pick up changes without restarting. When you are ready to go back to the published version, uninstall, remove the local marketplace, and re-add Patchline-AI/aria.
Cause: you are on an older plugin build (0.1.x) that used an 11-phase lifecycle with a .patchline/STATE.md ledger. That waterfall was retired in 0.2.0.
Fix: reload or reinstall the plugin (0.2.0+). The current skills are standalone moments — drop, pitch, link, fans, operator — with no phases, no Continue Aria, and no local state files. Say what you want, or invoke a skill directly.
Open an issue with the Bug Report template. Include:
- The exact command you ran
- What you expected vs. what happened
- Output of
/mcpshowing the aria connection state - Your Claude version, for example
claude --version
We triage within a week.