Bug
Running ccproxy auth login copilot with the device code flow fails with:
TypeError: CopilotOAuthProvider.save_credentials() takes 2 positional arguments but 3 were given
Full traceback:
File ccproxy/auth/oauth/flows.py:378 in run
return await provider.save_credentials(credentials, save_path)
TypeError: CopilotOAuthProvider.save_credentials() takes 2 positional arguments but 3 were given
Root Cause
Commit 9e44f249 added --file / custom save-path support to the OAuth flows and updated flows.py to call provider.save_credentials(credentials, save_path) with two arguments. ClaudeOAuthProvider and CodexOAuthProvider were updated to accept custom_path: Any | None = None, but CopilotOAuthProvider was not updated, leaving it with only one positional argument.
Fix
Add custom_path: Any | None = None to CopilotOAuthProvider.save_credentials() in ccproxy/plugins/copilot/oauth/provider.py. The parameter can be ignored for now (Copilot always uses its own storage), but the signature must match the interface expected by the flows.
Affected version
ccproxy-api 0.2.10 (latest)
Bug
Running
ccproxy auth login copilotwith the device code flow fails with:Full traceback:
Root Cause
Commit
9e44f249added--file/ custom save-path support to the OAuth flows and updatedflows.pyto callprovider.save_credentials(credentials, save_path)with two arguments.ClaudeOAuthProviderandCodexOAuthProviderwere updated to acceptcustom_path: Any | None = None, butCopilotOAuthProviderwas not updated, leaving it with only one positional argument.Fix
Add
custom_path: Any | None = NonetoCopilotOAuthProvider.save_credentials()inccproxy/plugins/copilot/oauth/provider.py. The parameter can be ignored for now (Copilot always uses its own storage), but the signature must match the interface expected by the flows.Affected version
ccproxy-api0.2.10 (latest)