diff --git a/src/commands/model/model.tsx b/src/commands/model/model.tsx
index 4a6114fde..f1d11fddc 100644
--- a/src/commands/model/model.tsx
+++ b/src/commands/model/model.tsx
@@ -37,6 +37,7 @@ import { generateMachineId, saveCoStrictCredentials } from '../../costrict/provi
import { extractExpiryFromJWT } from '../../costrict/provider/token.js';
import { updateSettingsForSource } from '../../utils/settings/settings.js';
import { useSetAppState as useSetGlobalAppState } from '../../state/AppState.js';
+import { isNotLoggedIn } from '../../utils/logoV2Utils.js';
function ModelPickerWrapper({
onDone,
@@ -339,6 +340,15 @@ export const call: LocalJSXCommandCall = async (onDone, _context, args) => {
return ;
}
+ // Check if user is logged in before showing model picker
+ if (isNotLoggedIn()) {
+ // User is not logged in, redirect to login
+ onDone('You need to login first. Use /login to authenticate.', {
+ display: 'system',
+ });
+ return;
+ }
+
return ;
};
diff --git a/src/components/ConsoleOAuthFlow.tsx b/src/components/ConsoleOAuthFlow.tsx
index 0f6acd502..751fe12c1 100644
--- a/src/components/ConsoleOAuthFlow.tsx
+++ b/src/components/ConsoleOAuthFlow.tsx
@@ -288,6 +288,8 @@ export function ConsoleOAuthFlow({
updateSettingsForSource('userSettings', { model: getDefaultSonnetModel() } as any)
// Clear costrict env var to prevent conflicts
delete process.env.CLAUDE_CODE_USE_COSTRICT
+ // Reset AppState model so logo reflects the new provider default
+ setAppState(prev => ({ ...prev, mainLoopModel: null, mainLoopModelForSession: null }))
setOAuthStatus({ state: 'success' })
void sendNotification(
@@ -734,6 +736,8 @@ function OAuthStatusMessage({
delete process.env.CLAUDE_CODE_USE_COSTRICT
// Set default model to sonnet for this provider
updateSettingsForSource('userSettings', { model: getDefaultSonnetModel() } as any)
+ // Reset AppState model so logo reflects the new provider default
+ setAppState(prev => ({ ...prev, mainLoopModel: null, mainLoopModelForSession: null }))
setOAuthStatus({ state: 'success' })
void onDone()
}
@@ -958,6 +962,8 @@ function OAuthStatusMessage({
delete process.env.CLAUDE_CODE_USE_COSTRICT
// Set default model to sonnet for this provider
updateSettingsForSource('userSettings', { model: getDefaultSonnetModel() } as any)
+ // Reset AppState model so logo reflects the new provider default
+ setAppState(prev => ({ ...prev, mainLoopModel: null, mainLoopModelForSession: null }))
setOAuthStatus({ state: 'success' })
void onDone()
}
@@ -1195,6 +1201,8 @@ function OAuthStatusMessage({
delete process.env.CLAUDE_CODE_USE_COSTRICT
// Set default model to sonnet for this provider
updateSettingsForSource('userSettings', { model: getDefaultSonnetModel() } as any)
+ // Reset AppState model so logo reflects the new provider default
+ setAppState(prev => ({ ...prev, mainLoopModel: null, mainLoopModelForSession: null }))
setOAuthStatus({ state: 'success' })
void onDone()
}