From df8f1a8f032a1e0d4f2e47348295f7ddddae96d5 Mon Sep 17 00:00:00 2001 From: Mahima Shanware Date: Tue, 7 Apr 2026 05:44:46 +0000 Subject: [PATCH] fix: address review bot feedback on concurrency and error handling - Reverted the 'isIdle' guard in AppContainer.tsx to ensure slash commands entered while the agent is busy are correctly processed or queued, preventing them from falling through as regular chat text. - Enhanced the physical path validation in config.ts to gracefully handle 'mkdirSync' failures (e.g. EACCES). The CLI will now log a warning and return the lexically-validated path instead of throwing a misleading 'Security violation' via 'resolveToRealPath'. --- packages/cli/src/ui/AppContainer.tsx | 2 +- packages/core/src/config/config.ts | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/packages/cli/src/ui/AppContainer.tsx b/packages/cli/src/ui/AppContainer.tsx index 3aed6c700e..ccf6b58fb1 100644 --- a/packages/cli/src/ui/AppContainer.tsx +++ b/packages/cli/src/ui/AppContainer.tsx @@ -1366,7 +1366,7 @@ Logging in with Google... Restarting Gemini CLI to continue. } const isMcpOrConfigReady = isConfigInitialized && isMcpReady; - if (isIdle && ((isSlash && isConfigInitialized) || isMcpOrConfigReady)) { + if ((isSlash && isConfigInitialized) || (isIdle && isMcpOrConfigReady)) { if (!isSlash) { const permissions = await checkPermissions(submittedValue, config); if (permissions.length > 0) { diff --git a/packages/core/src/config/config.ts b/packages/core/src/config/config.ts index 8372a6619d..71d427b56e 100644 --- a/packages/core/src/config/config.ts +++ b/packages/core/src/config/config.ts @@ -2305,6 +2305,18 @@ export class Config implements McpContext, AgentLoopContext { try { realPlansDir = resolveToRealPath(plansDir); } catch (e: unknown) { + if (mkdirError) { + const errorMessage = + mkdirError instanceof Error + ? mkdirError.message + : String(mkdirError); + // eslint-disable-next-line no-console + console.warn( + `Failed to initialize active plan directory at '${plansDir}': ${errorMessage}`, + ); + this.initializedPlanDirs.add(plansDir); + return plansDir; + } throw new SecurityError( `Security violation: Could not securely resolve plan directory '${plansDir}'. System error: ${e instanceof Error ? e.message : String(e)}`, );