chore: restore issues.json and issues.csv containing feature analysis

This commit is contained in:
Coco Sheng
2026-05-06 16:08:31 -04:00
parent ca9c2009cc
commit 363cdef6e8
2 changed files with 1722 additions and 0 deletions
+151
View File
@@ -0,0 +1,151 @@
Issue ID Title Status Assignee Labels Last Sync Link analysis effort_level reasoning recommended_implementation
25638 ![high](https://www.gstatic.com/codereviewagent/high-priority.svg) open 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/25638 Optimize retrieval of machine hostname by moving `os.hostname()` from the `Footer` component render cycle to a module-level constant. small This is a highly localized static refactoring task that involves moving a single system call to a module-level constant in one file. It fits the criteria for a small effort level as it is a trivial optimization with no complex logic or state management involved. In `Footer.tsx`, import `os` from `node:os`. Move `os.hostname()` to a `const HOSTNAME = os.hostname();` declaration outside the component function.
25573 Support boolean types when configuring `settings.json` via environment variables OPEN area/core, help wanted, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/25573 Allow environment variables like `${GEMINI_AUTO_THEME:-true}` to be correctly cast to boolean types during settings validation. small The fix is highly localized to the settings-validation.ts file. It requires a simple modification to the buildZodSchemaFromJsonSchema function to add a Zod preprocessor for boolean types, casting the strings 'true' and 'false' to actual booleans. This falls under the criteria of casting/formatting simple data types and localized fixes with a clear root cause. In `packages/cli/src/config/settings-validation.ts`, update the boolean schema definitions to use `z.preprocess()` which converts strings `'true'` or `'false'` into actual boolean values.
25571 feat: add machine hostname to CLI interface OPEN area/core, help wanted, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/25571 Retrieve and display the machine's hostname in the CLI interface (header or footer). small Retrieving the machine hostname via Node.js 'os.hostname()' and displaying it within an existing Ink component like AppHeader or Footer is a localized UI adjustment with trivial logic, requiring minimal changes to 1-2 files. Import `os` in `packages/cli/src/ui/components/AppHeader.tsx`. In `renderMetadata`, add a new `<Text>` component that displays the hostname retrieved via `os.hostname()`.
25494 [Voice] Cursor-Aware Insertion OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/25494 Splice transcribed voice text at the current cursor position in the input buffer instead of appending it. large While the logic to splice a string at a specific index is simple, the previous analysis indicates that the entire Voice Mode transcription pipeline and WhisperModelManager are currently missing from the codebase. Implementing this feature requires the foundational voice infrastructure, which falls under the 'Major Subsystems' category for Large effort.
25496 [Voice] Whisper Model Mirroring OPEN area/core, area/platform, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/25496 Mirror Whisper model weights to internal storage (GCS) and update the manager to download from the new locations. medium The task requires infrastructure setup (GCS bucket) and security evaluation for hosting model weights, which falls under service integration. While the code change to update URLs is simple, the requirement to evaluate and implement secure hosting for large binary assets, combined with the fact that the target subsystem (Voice) is currently being integrated, places this in the 1-3 day range.
25493 [Voice] Dynamic Visual Feedback (Audio Wave) OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/25493 Implement a dynamic ASCII/Unicode audio wave animation to replace the static 'Listening...' text during voice recording. medium Implementing a dynamic ASCII animation in Ink requires managing React state and effects to handle the animation loop, as well as synchronizing the UI state with the underlying audio recording lifecycle. This involves logic tracing and integration within the CLI's UI components, fitting the Medium effort criteria for React/Ink state management and UI synchronization.
25490 [Voice] Optimize Screen Real Estate (Banner) OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/25490 Modify the Voice mode banner ('> Voice mode: Hold Space to record (Esc to exit)') to be transient or removable to save screen real estate. small The task is a localized UI/Aesthetic adjustment focused on modifying or removing a specific Ink component (the Voice banner). It involves minor changes to the UI layout and potentially simple state management for transience (e.g., a timer or visibility toggle), which falls under the criteria for a small effort level (<= 1 day). In the Voice mode UI component, introduce a 'visible' state initialized to true and use a useEffect hook with a setTimeout to set it to false after 5 seconds. Conditionally render the banner text based on this state to make the instructions transient rather than persistent.
25491 [Voice] Privacy & Compliance UX Warning OPEN area/core, area/security, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/25491 Add a privacy and compliance UX warning detailing data flow when the Gemini Live backend is enabled for voice. medium Implementing a privacy and compliance warning requires defining new configuration keys in the settings schema and adding logic to the CLI's UI (Ink components) to trigger a notice. Since the requirement includes showing the warning 'upon first enabling,' it involves state management to track user acknowledgement or the initial toggle event, which fits the criteria for logic tracing and UI state synchronization.
25492 [Voice] Enhance `/voice-model` Menu Navigation OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/25492 Update the `/voice-model` selection menu so that pressing `Return` selects the model and automatically closes the dialog. small The task involves a localized UI/UX refinement within a single Ink component (VoiceModelDialog). It requires updating the 'Return' key event handler to trigger the dialog's dismissal logic immediately after selection. This is a trivial logic adjustment that does not involve complex state synchronization or architectural changes, fitting the criteria for a Small effort level. In `VoiceModelDialog.tsx`, update the `handleSelect` callback to invoke the `onClose` function immediately after the model selection logic is executed.
25478 Feature Request: Universal RTL and BiDi Support for Terminal Rendering OPEN area/core, help wanted, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/25478 Implement a bidirectional (BiDi) and RTL text rendering engine for the CLI that preserves ANSI escape codes and ensures precise line wrapping. large Implementing a comprehensive BiDi and RTL engine for a terminal environment is a major subsystem task. It requires complex algorithmic logic to handle the Unicode Bidirectional Algorithm (UBA) while preserving ANSI escape sequences for styling. Integrating this into the existing Ink-based rendering pipeline, ensuring correct line-wrapping without vertical displacement, and managing cross-platform terminal inconsistencies constitutes significant architectural complexity.
25439 A large number of logs leads to inefficiency in troubleshooting and affects scrolling performance OPEN area/core, help wanted, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/25439 Improve the debug log display by adding classification (filtering) and search functionality to handle large volumes of logs without affecting TUI performance. medium Implementing log classification and search functionality within the Ink-based TUI requires managing React state for search queries and filtered results, handling input focus transitions, and ensuring UI synchronization. This aligns with the Medium criteria for state management and UI interaction logic.
25380 Support per-project local settings OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/25380 Add support for a local-only configuration file (`.gemini/settings.local.json`) that is merged into the settings chain but not committed to git. small Adding support for a local configuration file involves updating the existing tiered settings loading logic to include an additional file path and merging it into the priority chain. This is a localized change within the configuration subsystem and fits the criteria for a small effort task. In `loadSettings` in `packages/cli/src/config/settings.ts`, add a check for the existence of `.gemini/settings.local.json`. If it exists, load and merge it after the standard workspace settings but before returning the final merged object.
25184 Feature Request: Seamless WSL2 Support on Windows (Path Translation, Unified Session Memory & Windows based Credentials) OPEN priority/p2, area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/25184 Implement WSL-aware mode to normalize paths, project IDs, and credential storage between Windows and WSL environments. medium Implementing WSL-aware path normalization and credential bridging requires detecting the WSL environment, translating paths between Linux and Windows formats (e.g., /mnt/c/ vs C:\), and ensuring consistent project hashing. This involves logic tracing across path resolution and session management modules to ensure unified session memory and credential access across OS boundaries, which requires robust testing on both environments. Update `listSessions` in `packages/cli/src/utils/sessions.ts` to accept an optional `filter` string. Use this string to filter the `sessions` array before the `.forEach` display loop.
25012 Add a setting to control @ file path context in VSCode terminal OPEN area/core, status/needs-info, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/25012 Introduce a setting to control whether `@` file path mentions in the VSCode terminal are relative to the current folder or the entire workspace. medium Implementing this requires adding a new configuration property to the settings schema, updating the AtFileProcessor to check this setting, and potentially modifying the path resolution logic in the core library's readPathFromWorkspace function. While the logic change is localized, ensuring consistent path resolution behavior across different terminal environments and operating systems requires careful validation and testing. Add `ui.fileAtMentionScope` (enum: 'cwd' | 'workspace') to `settingsSchema.ts`. Update `atFileProcessor.ts` to filter the files retrieved from `readPathFromWorkspace` based on this setting.
24812 File and code references shall be hyperlinks OPEN priority/p3, area/core, help wanted, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/24812 Convert file and code references in the CLI output to clickable hyperlinks using the OSC 8 terminal escape sequence. medium Implementing OSC 8 hyperlinks requires creating a utility for escape sequences, detecting terminal support, and modifying multiple UI components (Markdown renderer and Tool output handlers) to identify and wrap file paths. This involves logic tracing across the UI layer and adjustments to the Markdown parsing/rendering logic, which aligns with the Medium effort criteria for integration across components and parser modifications. In `packages/cli/src/ui/components/AskUserDialog.tsx`, wrap the `prompt` text in a `<Text bold color={theme.status.warning}>` component to make it stand out from standard chat messages.
24690 --list-sessions does not support --output-format json OPEN priority/p3, area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/24690 Enable raw JSON output for the `--list-sessions` command when the global `--output-format json` flag is used. small The fix is highly localized to the `listSessions` function in `packages/cli/src/utils/sessions.ts`. It requires a simple conditional check on the `config` object to determine if JSON output is requested and then serializing the existing `sessions` array. This falls under trivial logic and formatting adjustments, fitting the criteria for a small effort task. In `listSessions` (packages/cli/src/utils/sessions.ts), check `config.getOutputFormat()`. If it equals `'json'`, use `writeToStdout(JSON.stringify(sessions))` and return early.
24687 allow listing all sessions, not only ones for current directory OPEN priority/p3, area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/24687 Allow the `--list-sessions` command to discover and display sessions from all projects/directories, not just the current one, and include the directory path in the output. medium Implementing a global session list requires modifying the session manager to traverse all subdirectories within the ~/.gemini/sessions storage path, rather than just the current project's hash-based directory. This involves asynchronous filesystem operations, potential updates to the session metadata schema to ensure the original directory path is consistently stored/retrieved, and updating the CLI output logic to handle the aggregated data and the --json flag requirements. Update `listSessions` to scan the entire global session storage directory. Pass a flag to `sessionSelector.listSessions()` to skip filtering by current project hash, then display the `workspaceDir` property for each session found.
24663 ACP: let hosts answer ask_user and exit_plan_mode OPEN priority/p2, area/non-interactive, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/24663 Extend the Agent-to-Agent (ACP) server to allow host editors to programmatically respond to `ask_user` and `exit_plan_mode` prompts. large This task involves architectural and protocol changes to the Agent-to-Agent (ACP) server and the core Scheduler's routing logic. According to the criteria, modifications to the A2A protocol, task Scheduler, and implementing host-answerable input flows across the controller boundary are classified as Large effort due to their complexity and impact on the core execution pipeline.
24658 gemini extensions select command - interactive and one-shot ability to quickly manage extensions OPEN status/need-triage, area/extensions, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/24658 Implement a new `/extensions select` command that allows users to enable or disable multiple extensions at once, including an interactive multi-select picker. medium Implementing the `/extensions select` command requires creating a new interactive multi-select UI component using Ink, managing its internal state, and integrating it with the existing extension enablement services. This involves logic tracing across the CLI's command structure and state synchronization to batch-apply changes to the extension configuration, which aligns with the Medium effort criteria for React/Ink state management and service integration.
24553 feat(ui): implement persistent sticky topic header OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/24553 Relocate the `TopicStickyHeader` from the scrolling chat history to a persistent, fixed position at the top of the application layout. medium Relocating the TopicStickyHeader requires synchronizing state between the message history and the global application layout. This involves modifying multiple layout files (DefaultAppLayout, ScreenReaderAppLayout) and implementing or leveraging React state/context to track the 'current' topic as it changes during execution, which fits the criteria for state management and component integration.
24427 GeminiCLI.com Feedback: [ISSUE] OPEN area/extensions, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/24427 Flag paid extensions and services with additional Terms of Service (TOS) on the GeminiCLI.com extensions gallery. medium This task requires modifying the Zod schema for extension metadata in the core package, updating the extension registry data, and implementing UI changes in the website's gallery components to render the new flags. It involves state/data synchronization across the core types and the frontend, which aligns with the Medium effort criteria for schema validation and multi-component integration.
24407 Hide the generated output code from CLI OPEN status/need-triage, area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/24407 Add an option to suppress the verbose code streaming output during file-write operations, showing only a concise summary instead. small The task involves adding a new configuration field to the settings schema and implementing a conditional rendering check in the ToolResultDisplay component. This is a highly localized change (2 files) that falls under trivial logic/config and UI adjustments as per the criteria. Add `ui.verbosity` to `settingsSchema.ts`. In `ToolResultDisplay.tsx`, if the tool is `edit` or `write_file` and verbosity is `'summary'`, render only the status line and the line count instead of the `DiffRenderer`.
24395 ask_user interface can be difficult to notice OPEN priority/p2, area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/24395 Make the `ask_user` tool prompt more prominent in the TUI to prevent users from missing it. small This is a localized UI/aesthetic adjustment within a single Ink component (AskUserDialog.tsx). It involves simple styling changes such as adding bold text or adjusting colors to improve visibility, which aligns with the criteria for small effort tasks. In `AskUserDialog.tsx`, wrap the prompt text in a `<Text bold color={theme.status.warning}>` component and add a top margin to separate it from the history.
24280 ACP: populate PromptResponse.usage and send UsageUpdate with cost OPEN status/need-triage, area/non-interactive, status/possible-duplicate, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/24280 Enhance the ACP server to populate `PromptResponse.usage` and broadcast `UsageUpdate` events that include calculated session costs. medium This task involves logic tracing and integration across the ACP server implementation and the model response handling. It requires mapping existing token data to a new protocol-compliant structure and implementing a cost calculation utility based on model-specific rates. Since it involves modifying the asynchronous flow to broadcast session notifications (UsageUpdate) and ensuring protocol consistency across components, it fits the Medium effort criteria.
24199 Alpine startup/auth: remove duplicate refresh and reduce first-pass startup work OPEN status/need-triage, area/core, status/possible-duplicate, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/24199 Optimize the auth and startup flow for non-interactive environments (like Alpine Linux CI/CD) by reducing redundant work and credential refreshes. medium The task involves logic tracing and state synchronization between the initial CLI startup sequence and the React/Ink UI hooks. Optimizing the authentication lifecycle to prevent redundant refreshes and ensuring state is correctly passed through the asynchronous flow requires careful validation of the auth provider and startup logic, fitting the criteria for Medium effort.
24169 GeminiCLI.com Feedback: skill doesnt appear in /skills list. OPEN status/need-triage, area/extensions, area/documentation, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/24169 Investigate and fix why certain skills do not appear in the `/skills` list despite being successfully loaded. medium The issue involves investigating and fixing logic within the CLI's skill discovery and UI rendering pipeline. Based on the previous analysis, this requires tracing state synchronization between the skill manager and the Ink-based UI components (SkillsList.tsx), ensuring that filtering logic correctly handles various skill types. This aligns with the Medium criteria for logic tracing and state management in React/Ink components. Update the filtering logic in `packages/cli/src/ui/commands/skillsCommand.ts` to include all skills from the `agentRegistry` without excluding based on metadata flags like `isHidden` unless explicitly requested.
24071 Let users queue a message while compression is running OPEN status/need-triage, area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/24071 Enable users to type and queue a new message while the conversation history is being compressed, rather than blocking the UI. medium This task requires modifying the React/Ink state management within the CLI's UI components to handle asynchronous state transitions between compression and message processing. It involves synchronizing the input buffer with the completion of the compression task, which fits the criteria for Medium effort due to state synchronization and async flow handling.
24033 Provide detailed logs with LLM calls with `--debug` OPEN status/need-triage, area/core, status/possible-duplicate, type/bug 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/24033 Add detailed raw request and response logging for all Gemini API calls when the `--debug` flag is active. small The task is highly localized to the `LoggingContentGenerator` class. It involves adding a few `debugLogger.debug` calls to capture and output the JSON payloads of API requests and responses, which are already being processed by this class. This aligns with the criteria for minor logging adjustments and localized fixes. In `loggingContentGenerator.ts`, wrap the `generateContent` and `sendMessage` calls with `debugLogger.debug` statements that log the stringified request and response objects.
24030 Provide method to 'interrupt' stuck agent when running in headless mode OPEN status/need-triage, area/non-interactive, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/24030 Provide a mechanism (like SIGINT handling) to interrupt a 'stuck' agent turn when running in headless/non-interactive mode. medium Implementing a signal handler that interrupts a 'stuck' agent turn to prompt for additional context requires more than a simple process exit. It involves modifying the asynchronous control flow to catch the signal, triggering the existing AbortController, and then transitioning the process state to read from stdin—potentially in an environment where stdin was not originally expected to be interactive. This requires logic tracing across the CLI and the agent session management to ensure the session remains valid after the interruption. Add a `process.on('SIGINT', ...)` handler in `nonInteractiveCli.ts` that calls `abortController.abort()` to cleanly terminate the pending model request and exit the process.
23874 Improve filesystem error handling for ECONNRESET OPEN status/need-triage, area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/23874 Provide a user-friendly error message for the `ECONNRESET` system error code in filesystem operations. small The change is a trivial addition of a single error message string to a static mapping object in a single file (fsErrorMessages.ts). It falls under the category of string/content updates and trivial logic adjustments, requiring minimal effort and testing. Add a new entry for `'ECONNRESET'` to the `errorMessageGenerators` map in `fsErrorMessages.ts` with a description like 'The connection was reset by the filesystem or remote host.'
23861 Improve filesystem error handling for ETIMEDOUT OPEN status/need-triage, area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/23861 Provide a user-friendly error message for the `ETIMEDOUT` system error code in filesystem operations. small The change is a highly localized string/content update involving the addition of a single entry to a mapping object in one file (fsErrorMessages.ts). It requires no complex logic or cross-component integration. Add an entry for `'ETIMEDOUT'` to the `errorMessageGenerators` map in `fsErrorMessages.ts` with a clear message like 'The filesystem operation timed out.'
23800 please show full command with Ctrl+O OPEN area/core, status/needs-info, type/bug 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/23800 Display the full executed shell command in the tool detail view triggered by `Ctrl+O`. small This is a localized UI adjustment within the Ink-based terminal interface. The shell command data is already captured in the ToolInvocation object; the task simply involves adding a Text component to the existing detail view triggered by the Ctrl+O keypress handler. It falls under the criteria for minor UI tweaks and displaying existing data. Update `packages/cli/src/ui/components/views/ToolOutputDetail.tsx` to display `invocation.command` at the top of the detail box, formatted as a code block.
23796 Support XDG Base Directory Specification for configuration OPEN status/need-triage, area/core, status/possible-duplicate, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/23796 Modify the CLI to follow the XDG Base Directory Specification for configuration and data storage (e.g., using `~/.config/gemini` if `XDG_CONFIG_HOME` is set). small The change is highly localized to a single file (packages/core/src/utils/paths.ts) and involves straightforward logic to check environment variables and return a path string. This fits the criteria for trivial logic/config adjustments and is easily reproducible and testable. In `paths.ts`, update the `getGeminiDir()` function to check `process.env.XDG_CONFIG_HOME` or `process.env.GEMINI_CONFIG_DIR` before defaulting to `path.join(os.homedir(), '.gemini')`.
23786 Provide link when Automatic Update fails OPEN priority/p3, area/core, 🔒 maintainer only, type/bug 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/23786 Provide a manual download/update URL in the TUI notification when the automatic background update fails. small This is a localized string and UI content update within the UpdateNotification component. It involves modifying a static error message to include a manual installation command, which falls under the criteria for minor UI/aesthetic adjustments and string updates. Update `packages/cli/src/ui/components/UpdateNotification.tsx` to accept an optional `downloadUrl` and render it using a blue `<Text>` element if the update state indicates a failure.
23745 Improve consistency of debugLogger behavior across CLI components OPEN status/need-triage, area/core, type/bug 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/23745 Refactor the logging system to ensure `debugLogger` behavior and output formatting are consistent across both `packages/core` and `packages/cli`. medium Standardizing debugLogger involves modifying the core logging utility and refactoring multiple components across the core and CLI packages to remove manual environment guards. This requires logic tracing across the codebase and validation to ensure the TUI correctly handles the standardized output without display inconsistencies, fitting the criteria for integration across multiple components.
23730 Completed tasks moving to the end is confusing OPEN status/need-triage, area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/23730 Fix the confusing behavior where completed sub-tasks are automatically moved to the end of the task list. small This is a localized UI adjustment in the Todo component. The fix involves either modifying the sorting logic or adding a visual separator between task states within a single file (packages/cli/src/ui/components/messages/Todo.tsx), which aligns with the criteria for minor structural layouts and trivial logic changes. In `Todo.tsx`, remove any `.sort()` logic that prioritizes incomplete tasks, ensuring the `subtasks` array is rendered in its original order.
23675 Gemini CLI is Clumsy OPEN status/need-triage, area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/23675 Address general UX 'clumsiness' (e.g., input lag, flickering, or non-standard key handling) reported in feedback. medium The issue describes fundamental UX friction in the TUI, specifically regarding input handling (Ctrl-X workflow) and output formatting (line numbers). Addressing this requires modifying React/Ink state management in InputPrompt.tsx to improve the input buffer experience and potentially adjusting the Markdown renderer or system prompt logic to handle code block formatting better. This involves logic tracing and state synchronization across multiple UI components, fitting the Medium criteria.
23663 feat: Export session to file for sharing OPEN status/need-triage, area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/23663 Add a feature to export the current conversation session to a standalone file (JSON or Markdown) for sharing or archival. medium Implementing session export and import requires integrating with the ChatRecordingService, handling asynchronous file I/O, and modifying the CLI state initialization to support loading from a file. Ensuring the session can be correctly resumed involves state synchronization and validation of the imported data, which fits the criteria for logic tracing and service integration across components. Add a `/session export <path>` subcommand in `packages/cli/src/ui/commands/sessionCommand.ts`. The action should retrieve the full transcript from `agentContext.chatRecordingService` and save it to the provided path.
23617 Consolidate diffstat generation logic OPEN area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/23617 Consolidate the duplicated logic for generating `diffstat` (line additions/deletions) into a single shared utility. medium Consolidating diffstat generation logic requires tracing how file changes are calculated across multiple tool implementations (e.g., edit_file, apply_diff). It involves more than simple string extraction; it requires ensuring that the logic correctly handles edge cases where users manually modify AI-suggested edits, necessitating logic synchronization across the core utility and the tool execution layer, along with robust validation to prevent regressions in chat history reporting. Extract the line-counting and diff-aggregation logic into a `calculateDiffStat` function in `fileDiffUtils.ts` and update `edit.ts` and `write-file.ts` to use it.
23561 GeminiCLI.com Feedback: Add colab MCP server to extensions OPEN status/need-triage, area/extensions, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/23561 Add a Google Colab MCP server entry to the official extensions gallery on GeminiCLI.com. small This is a content and metadata update for the extensions gallery. It involves adding a new entry to a static list or configuration file, which falls under the criteria for string/content updates and trivial configuration changes. Add the Colab MCP server configuration and description to the `extensions.json` registry file (or equivalent site metadata).
23501 [Feature Request] Simplify Configuration System & Add Global Settings (Like Claude Code) OPEN status/need-triage, area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/23501 Redesign and simplify the multi-tiered configuration system to provide a flatter schema and more intuitive global/local override behavior. large Redesigning the configuration system from a fragmented, nested structure to a unified global/local model requires significant architectural changes to the core Settings class, schema definitions, and UI components. It also necessitates a robust migration strategy for existing user data and complex logic for hierarchical setting resolution, fitting the criteria for a major subsystem overhaul.
23489 Support resuming sessions from any folder with globally addressable session IDs OPEN area/core, status/possible-duplicate, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/23489 Allow sessions to be resumed using their UUID from any directory, rather than being restricted to the directory where they were created. medium Implementing global session resumption requires modifying the session discovery logic to search across all project-specific storage directories rather than just the current one. It also necessitates adding an interactive prompt to handle directory mismatches and updating multiple entry points including --resume, /resume, and --list-sessions, which involves logic tracing and UI state management. In `resolveSession` (packages/cli/src/utils/sessions.ts), if the session is not found in the current project directory, use `fs.readdirSync` to iterate over all subdirectories in the sessions root and look for a matching UUID filename.
23456 Feature: Explain this Error Git Pre-Commit Hook Integration OPEN status/need-triage, area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/23456 Implement a Git pre-commit hook integration that automatically pipes hook failures to Gemini for an explanation and suggested fix. medium This feature requires implementing a new CLI command, handling filesystem operations to install the hook into the .git directory, and creating a wrapper script to manage process exit codes and pipe stderr to the Gemini API. It involves service integration and asynchronous flow management, fitting the 1-3 day development window.
23425 feat: add three-snapshot memory leak detection utility OPEN status/need-triage, area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/23425 Implement a 'three-snapshot' memory leak detection utility that captures and compares process heap states over time. medium Implementing the three-snapshot utility requires creating a new telemetry module with logic for stateful snapshot tracking, delta calculations, and severity classification. While it uses standard Node.js APIs, it necessitates robust validation and integration into the CLI's lifecycle to ensure accurate reporting without introducing its own overhead, fitting the 1-3 day medium effort profile.
23422 feat: add V8 heap snapshot capture utility for memory diagnostics OPEN status/need-triage, area/core, type/bug 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/23422 Add a diagnostic utility to capture and save V8 heap snapshots for memory usage analysis. small The task involves implementing a localized utility function that wraps the built-in Node.js 'v8' module. It requires basic filesystem operations and metadata formatting, which is straightforward and constrained to a single module, fitting the criteria for a small effort level. Add a subcommand to `debugCommand.ts` (or a new `/debug` handler) that imports `v8` from `node:v8` and executes `v8.writeHeapSnapshot(path.join(storage.getProjectTempDir(), 'heap.heapsnapshot'))`.
23402 test(ACP): Add missing unit coverage for restore command flows OPEN status/need-triage, area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/23402 Implement missing unit test coverage for the ACP (Agent-to-Agent) session restoration and 'restore' command flows. small The task involves adding unit test coverage for a single command file. The logic in restore.ts is straightforward, and a significant portion of the test suite is already implemented in the provided context. Completing the remaining test cases for error branches and the generator flow is a highly localized task that can be completed within a single day. Create or update `packages/core/src/code_assist/server.test.ts` to include test scenarios that trigger the `restore` command and verify that the agent state (history, context) is correctly re-hydrated.
23392 ## 🚀 Improvement: JetBrains IDE Detection Robustness & UX Enhancements OPEN status/need-triage, area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/23392 Improve the robustness and accuracy of JetBrains IDE detection logic across Windows, macOS, and Linux to provide a better onboarding experience for extensions. medium The task involves implementing a timeout for process traversal to prevent CLI hangs, which falls under asynchronous control flow management. Additionally, it requires refining detection logic for multiple JetBrains products and updating UI messaging/guidance, necessitating logic tracing and integration across the detection utility and user-facing CLI components.
23373 Allowing remote use of Gemini CLI through telegram, etc. OPEN status/need-triage, area/non-interactive, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/23373 Implement a remote interface (e.g., Telegram Bot API) to allow interacting with the Gemini CLI agent from mobile devices or external chat applications. large Implementing a remote interface like Telegram requires a significant architectural shift from a terminal-based CLI to a persistent service model. It involves creating a new adapter layer to map external API events to the agent's internal logic, managing persistent state across sessions, and handling external network protocols (webhooks/long-polling), which constitutes a major subsystem implementation.
23371 Better TUI copy method OPEN priority/p2, area/core, type/bug 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/23371 Implement a more user-friendly TUI copy method, such as a dedicated 'Copy Mode' or a keyboard shortcut to copy blocks of code without terminal formatting (borders, line numbers). medium Implementing a user-friendly copy method in an Ink-based TUI requires managing UI state transitions to toggle formatting (like borders and line numbers) or integrating a clipboard utility to programmatically capture specific blocks. This involves logic tracing in the MainContent component, handling keyboard input via hooks, and managing asynchronous clipboard operations, which aligns with the Medium effort criteria for state management and service integration.
23350 Improve filesystem error message handling for ENOTDIR Fixes #23350 OPEN status/need-triage, area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/23350 Add specialized error message handling for the `ENOTDIR` (Not a directory) system error code in the filesystem utility. small The task is a highly localized string and logic update within a single file (fsErrorMessages.ts). It involves adding a single entry to a static mapping object to handle the ENOTDIR error code, which fits the criteria for trivial logic and content updates. Add an entry for `'ENOTDIR'` to the `errorMessageGenerators` map in `packages/core/src/utils/fsErrorMessages.ts` with a message like 'Path exists but is a file, expected a directory.'
23165 feat(cli): add /context command to show context window breakdown OPEN area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/23165 Implement a new `/context` slash command that displays a detailed breakdown of the current token usage, including system instructions, chat history, and attached files. medium Implementing a new slash command with a multi-part visual UI (segmented bar, table) using Ink requires state synchronization with the chat session's token metrics. While the underlying data exists in the Summarizer and GeminiChat services, formatting the breakdown, calculating estimates like turns remaining, and ensuring the UI fits the compact requirements involves non-trivial logic and component integration across the CLI and service layers.
22980 Clean up inconsistent naming conventions, configuration architecture, and documentation to improve developer experience OPEN area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/22980 Perform a comprehensive cleanup of naming conventions, configuration structures, and internal documentation across the entire monorepo to improve developer ergonomics. large This task involves a comprehensive refactoring of configuration schemas, public-facing CLI commands, and internal naming conventions across the entire monorepo. Because it impacts exported APIs and core configuration architecture, it requires synchronized changes across multiple packages, extensive updates to unit and integration tests to prevent regressions, and a complete overhaul of the documentation. The breadth of the changes and the risk of breaking core functionality across the project align with the criteria for a Large effort level.
22958 Refactor AgentConfigDialog OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/22958 Refactor the `AgentConfigDialog` component to improve maintainability and simplify its complex state management. medium Refactoring the AgentConfigDialog involves complex React/Ink state management, transitioning to a store pattern, and implementing dynamic schema validation. This aligns with the Medium criteria as it requires logic tracing for UI state synchronization (e.g., focus and input buffers) and adjustments to validation logic across multiple sub-components.
22884 UX: `/mcp list` in interactive mode does not show tools from subagent-specific MCP servers OPEN area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/22884 Fix the issue where `/mcp list` only shows tools from global MCP servers, ignoring those specifically attached to active subagents. medium The fix requires logic tracing and integration across multiple components, specifically the CLI command layer and the core McpClientManager/McpClient logic. It involves refactoring how tools are aggregated from multiple registries (global and subagent-specific), which falls under the Medium criteria for service integration and state synchronization across components.
22743 Discover extensions under the current workspace OPEN area/extensions, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/22743 Enable automatic discovery of extensions located within the current workspace (e.g., in a `.gemini/extensions` folder). medium Implementing workspace-relative extension discovery requires modifying the ExtensionLoader to include new filesystem search paths and path resolution logic. It also necessitates a trust-check mechanism for local code execution to ensure security, which involves logic tracing and integration across the configuration and extension loading subsystems, fitting the criteria for logic tracing and filesystem/path resolution.
22729 Implement getCustomExcludes and expose customExcludePatterns setting OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/22729 Implement a `customExcludePatterns` setting to allow users to define project-specific file patterns that should be ignored by all tools. small The task involves adding a new field to the configuration schema (likely a Zod schema) and implementing a simple getter method in the Config class. The core logic for consuming these patterns is already present in the FileExclusions class, which currently uses a placeholder. This is a localized configuration update that fits the 'Trivial Logic/Config' criteria. Add `context.customExcludePatterns` (string array) to `settingsSchema.ts`. Update the `getIgnoreFilter` function in `ignorePatterns.ts` to merge these user patterns with the default excludes.
22666 Stale closures, excessive effect and state, unideal use of useSettingsStore OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/22666 Deep refactor of the React-based TUI layer to fix stale closures, optimize `useEffect` usage, and reduce unnecessary re-renders in `AppContainer`. large The issue describes a deep, foundational refactor of the React-based TUI layer across the entire codebase. Addressing stale closures, optimizing state/effect patterns, and resolving race conditions in the terminal event loop involves complex state synchronization and architectural cleanup that exceeds the scope of localized fixes, fitting the criteria for a major subsystem overhaul.
22651 UI: Need expand/collapse feature for Pasted Text and Image chips to prevent context contamination OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/22651 Add an expand/collapse feature for large pasted text blocks and image chips in the chat history to improve TUI readability. medium Implementing an expand/collapse toggle in an Ink-based TUI requires managing component state for visibility and handling keyboard/focus events to trigger the toggle. This falls under React/Ink state management and UI synchronization, as it involves modifying the input buffer rendering and potentially the message content components to handle interactive previews without disrupting the terminal layout.
22644 [FEATURE]: Allow custom session ID when starting google-gemini -CLI(e.g., --session my-project) OPEN status/need-triage, area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/22644 Add a `--session <id>` command-line flag to allow users to start the CLI with a specific, named session ID instead of a random UUID. small Adding a CLI flag to override a session ID is a straightforward configuration change. Since the session ID is already a parameter in the Config class, this task only requires updating the CLI argument parser (e.g., commander) and passing the value to the session initialization logic, fitting the criteria for a localized logic/config update. Add the `session` option to the Yargs config in `packages/cli/src/config/config.ts`. In `gemini.tsx`, pass this value to the `Config` constructor instead of allowing it to generate a random UUID.
22627 Feature request: Mermaid diagram preview for generated mermaid code OPEN area/core, status/possible-duplicate, help wanted, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/22627 Implement a preview mechanism for Mermaid diagrams generated by the model. medium Implementing a Mermaid preview requires adding logic to detect specific code blocks within the model's output, managing temporary filesystem resources for the HTML generation, and integrating with a browser-opening utility. This involves asynchronous flow management and service integration that goes beyond simple UI tweaks but does not reach the architectural complexity of core protocol changes.
22563 feat: add /fork command for session branching OPEN area/core, help wanted, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/22563 Implement a `/fork` command that creates a new, independent session starting with the history of the current one. medium Implementing the /fork command requires integrating logic across the SlashCommandService and ChatRecordingService. It involves asynchronous file system operations to duplicate session records, generating new session IDs, and ensuring state consistency between the current memory-resident conversation and the new persisted file. This falls under the medium category as it involves service integration and asynchronous flow management.
22510 Feature: Batch confirmation for multi-file edits OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/22510 Add a batch confirmation feature that allows users to approve all pending tool calls (e.g., multiple file edits) with a single interaction. medium Implementing batch confirmation requires modifying state management in the CLI's Ink components to aggregate pending tool calls and updating the core ConfirmationBus to handle bulk approval signals. This involves logic tracing across packages and managing asynchronous UI states, which fits the criteria for medium effort.
22370 "Support for Asynchronous ""Push"" Triggers / External Wake-up for Idle Agent Sessions" OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/22370 Support asynchronous 'push' triggers that can wake up an idle agent session from an external source, such as an MCP server notification or a webhook. large This task requires a fundamental architectural shift from a pull-based interaction model to a push-based one. It involves implementing a persistent background listener (IPC or socket-based), modifying the core AgentScheduler to handle externally triggered turns, and managing complex state synchronization within the Ink-based InteractiveCli to ensure the UI updates correctly when an external event occurs while the user is idle. This aligns with the criteria for major architectural changes and subsystem modifications.
22288 Feature Request: Environment Variable expansion and injection inside settings.json OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/22288 Enable environment variable expansion (e.g., `${VAR_NAME}`) for all string values within the `settings.json` configuration file. small The core logic for environment variable expansion is already implemented in the provided envVarResolver.ts utility. The task only requires integrating this existing function into the settings loading pipeline within the config module and adding corresponding unit tests, which is a highly localized and straightforward change. In `loadSettings` (packages/cli/src/config/settings.ts), after parsing the JSON but before validation, pass the settings object through `resolveEnvVarsInObject()`.
22249 "[MCP] ""Method not found"" error when using tools with Elicitation support" OPEN status/need-triage, area/extensions, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/22249 Resolve the 'Method not found' error occurring during MCP tool calls that involve Gemini's elicitation (user-clarification) flow. large Implementing MCP Elicitation support requires adding server-to-client request handling, which is a significant protocol addition to the current MCP integration. This involves complex state management to pause tool execution, transition the Ink-based UI to an interactive input state, and route user feedback back through the transport layer. According to the criteria, modifications to MCP integrations and handling complex asynchronous flows across major subsystems qualify as Large effort.
22184 # [BUG Report] Logger Architecture Needs Refactor OPEN priority/p2, area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/22184 Perform a major refactor of the logging architecture to provide a more consistent, extensible, and performant observability layer. large Refactoring the logging architecture is a cross-cutting architectural change that involves defining a new standardized interface and implementing a provider-based pattern for different sinks (telemetry, file, TUI). As noted in the previous analysis, this requires updating hundreds of call sites across multiple packages and modifying core primitives in the core package, fitting the criteria for a major subsystem overhaul.
22130 [UI] Refactor Hardcoded Layout Constants in ThemeDialog OPEN area/core, help wanted, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/22130 Refactor the hardcoded layout constants and magic numbers in the `ThemeDialog` component to use shared theme values. small This task is a localized static refactoring of UI constants within a single file (ThemeDialog.tsx). It involves extracting magic numbers into constants or a shared theme configuration, which aligns with the criteria for small effort tasks such as UI/aesthetic adjustments and static refactoring. Extract values like `DIALOG_WIDTH` and `PADDING` to the top of the file or import them from `packages/cli/src/ui/semantic-colors.js`.
22083 feat(cli): expose model thinking events in --output-format stream-json OPEN priority/p2, area/non-interactive, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/22083 Expose the model's internal 'thinking' process events in the `--output-format stream-json` mode for better transparency in headless execution. small The task is highly localized, requiring updates to a type definition and a single event handling loop in the non-interactive CLI. It follows existing patterns for JSON streaming and does not involve complex state management or architectural changes, fitting the criteria for a small effort level. In `useGeminiStream.ts`, update the `stream-json` emitter to check for parts with the `thought: true` flag (or equivalent from the API) and include their content in the output chunk.
22019 feat(cli): add 'remove' and 'clear' subcommands to '/directory' command OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/22019 Extend the `/directory` command with new `remove <path>` and `clear` subcommands to allow better management of the active workspace context. small This task is a localized extension of an existing command. It involves adding two subcommands ('remove' and 'clear') to the '/directory' handler and implementing the corresponding logic in the DirectoryManager. Since the infrastructure for directory management and command parsing is already in place, this is a straightforward logic update constrained to 1-2 files. Add `directoryRemoveCommand` and `directoryClearCommand` to the subcommands array in `packages/cli/src/ui/commands/directoryCommand.ts`. The actions should call `config.removeIncludedDirectory()` or `config.clearIncludedDirectories()`.
21999 [UX/CORE] Background Process Management & Persistence OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/21999 Implement a background process management system that can track, manage, and persist long-running tasks (like background servers) across CLI sessions. medium Implementing persistent background process management requires creating a file-based registry to track PIDs across sessions, modifying the ShellExecutionService to synchronize with this registry, and adding new CLI command handlers. This involves state management, filesystem I/O, and process lifecycle validation, fitting the Medium criteria for logic tracing and integration across components.
21987 feat(cli): Add `doctor` command for config validation and diagnostics OPEN status/need-triage, area/core 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/21987 Implement a new `/doctor` command to perform system-wide health checks, including authentication status, network connectivity to Gemini API, and configuration validity. medium Implementing a `doctor` command involves integrating multiple subsystems including configuration validation, authentication status, and network connectivity. It requires creating a new command handler, developing a diagnostic reporting UI in Ink, and implementing logic for the `--fix` flag which involves programmatic file system modifications. This aligns with the Medium criteria for service integration, state management, and validation logic across several components.
21981 Not really a bug, but an annoyance. When it's doing an acive job checking a lot of files an processes it interupts typing out a new message with approval boxes.. pretty annoying. OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/21981 Refactor the TUI to prevent asynchronous tool approval prompts from interrupting the user's current typing flow in the `Composer`. medium This task involves managing React/Ink state and focus synchronization between the Composer and the Tool Approval components. It requires ensuring that the input buffer remains active and focused while asynchronously rendering approval prompts, which falls under the Medium effort category for state management and UI focus logic.
21974 feat(cli) : Add Thinking Level selection to the interactive `/model` UI OPEN area/core, 🔒 maintainer only 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/21974 Add a 'Thinking Level' (budget) selection to the interactive `/model` selection dialog. medium Adding a 'Thinking Level' selection to the interactive `/model` UI involves modifying React/Ink state management and navigation logic within the ModelDialog component. It requires synchronizing the UI state with the underlying model configuration and ensuring the selection is correctly applied to the generation parameters, which aligns with the Medium effort criteria for state management and component integration. In `ModelDialog.tsx`, add a new selection list for thinking budgets (e.g., 'Low', 'Medium', 'High'). Update the `onSelect` callback to persist the chosen budget to the model configuration.
21899 Better Settings UX. OPEN priority/p2, area/core, status/possible-duplicate, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/21899 Improve the Settings UI by adding categories, search functionality, and better descriptions for complex configuration options. medium The issue involves multiple interconnected UX improvements within the Settings UI, specifically requiring React/Ink state management to resolve input focus conflicts (j/k keys), conditional rendering logic for the restart prompt, and UI synchronization. These tasks require logic tracing and state handling across the SettingsDialog component rather than simple static changes, fitting the criteria for Medium effort.
21869 RFC: Hands-Free Multimodal Voice Mode Architecture for Gemini CLI OPEN priority/p2, area/core, status/possible-duplicate, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/21869 Implement the core architecture for Hands-Free Multimodal Voice Mode, including continuous audio streaming and voice activity detection (VAD). large This task involves implementing a major new subsystem for real-time multimodal voice interaction. It requires complex architectural changes, including managing continuous WebSocket audio streams, integrating with system-level audio APIs, and handling high-concurrency streaming data, which aligns with the criteria for Large effort.
21823 [Feature Request] Increase MCP tool limit from 100 to 500 OPEN area/core, area/agent, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/21823 Increase the hardcoded limit for the number of tools a single MCP server can expose to the agent. small Increasing a hardcoded limit or default configuration value is a trivial logic change that typically involves modifying a single constant in the MCP management logic. This fits the criteria for a small effort level as it is highly localized and easily verifiable. In `packages/core/src/tools/mcp-client-manager.ts`, locate the `MAX_TOOLS_PER_SERVER` constant and update its value from `100` to `500`.
21773 Yellow background is horrible OPEN area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/21773 Change the default background color used for code blocks and highlighted text to improve readability and visual appeal. small The issue involves localized UI aesthetic adjustments and minor logic fixes. Specifically, it requires changing default theme color constants and ensuring the 'useBackgroundColor' setting is correctly applied within the Ink components. The secondary issue regarding the bug report link is a string/content update. These tasks are constrained to the UI/theme layer and do not impact core application logic or complex state management. Update the `codeBackground` or equivalent color value in `packages/cli/src/ui/semantic-colors.js` to a more neutral or customizable color.
21675 [Feature Request/UI] Map Shift+Enter to newline for multi-line prompt entry OPEN priority/p2, area/core 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/21675 Enable `Shift+Enter` to insert a newline into the prompt buffer, allowing for easier multi-line prompt entry without immediate submission. medium Implementing Shift+Enter in a terminal environment is more complex than a standard web UI because many terminal emulators do not distinguish between Enter and Shift+Enter by default. This requires logic tracing within the Ink-based TextInput component to handle specific ANSI escape sequences and manage the input buffer state, fitting the criteria for React/Ink state management and input synchronization.
21649 [Feature] Add configuration schema for Hands-Free Multimodal Voice Mode OPEN area/core, 🔒 maintainer only 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/21649 Add the configuration schema and persistence logic for the proposed Hands-Free Multimodal Voice Mode. small The task involves adding a new configuration object to the existing settingsSchema.ts file. This is a localized change to a schema definition, which falls under the 'Trivial Logic/Config' category of the Small effort level. It does not require implementing the actual voice processing logic, only the metadata and default values for the settings. Add a new `voice` section to `packages/cli/src/config/settingsSchema.ts` with fields like `handsFreeEnabled`, `autoSilenceTimeout`, and `preferredInputDevice`.
21615 Hooks: Attach agent information OPEN area/core, 🔒 maintainer only 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/21615 Enhance the lifecycle hook system by attaching active agent metadata to the context passed to each hook execution. medium This task requires modifying the HookContext interface and updating the hook trigger points within the agent execution lifecycle. It involves tracing logic across the hook system and agent management components to ensure metadata is correctly propagated, fitting the criteria for logic tracing and integration across multiple components. In `packages/core/src/hooks/types.ts`, add an optional `agent` field to `HookContext`. Update `HookSystem.ts` to populate this field from the active `AgentContext` before executing any registered hooks.
21602 Request: Wrap long prompts in Tool Confirmation Screen instead of truncating OPEN area/core, help wanted, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/21602 Modify the tool confirmation screen to wrap long input prompts and command arguments instead of truncating them. small This is a localized UI adjustment within an Ink component. It involves modifying the layout properties of the ToolConfirmationMessage component to enable text wrapping instead of truncation, which aligns with the criteria for minor tweaks to structural layouts in Ink components. "In `packages/cli/src/ui/components/messages/ToolConfirmationMessage.tsx`, locate the `<Text>` component rendering the tool arguments and add the `wrap=""wrap""` prop, while ensuring the parent container has a fixed width or `flexGrow: 1`."
21505 docs(sdk): add JSDoc to exported interfaces in packages/sdk/src/types.ts OPEN area/core, area/agent, area/documentation, help wanted, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/21505 Add comprehensive JSDoc documentation to all public interfaces and types exported by the SDK package. small This is a documentation-only task that involves adding JSDoc comments to a single file (packages/sdk/src/types.ts). It falls under the 'String/Content Updates' category as it does not affect runtime logic or require complex testing. Iterate through `packages/sdk/src/types.ts` and add descriptive JSDoc comments to each `interface` and `type` declaration, explaining the purpose and valid values for each field.
21493 feat(ui): refine focus highlight for selection lists and settings items OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/21493 Improve the visual clarity of the focus highlight in interactive selection lists and the settings dialog. small The changes are localized to two UI components (BaseSelectionList and BaseSettingsDialog) and involve aesthetic refinements such as padding, color adjustments, and layout logic within the Ink framework. These modifications align with the criteria for minor UI/aesthetic adjustments and are easily verifiable through updated unit tests. Update the `focus` styles in `packages/cli/src/ui/hooks/useSelectionList.ts` and `SettingsDialog.tsx` to use a more prominent color from the `theme` object, such as `theme.status.info`.
21484 feat(cli): Interactive Progress Visualization & Task Stepping OPEN area/core, 🔒 maintainer only 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/21484 Implement a new interactive visualization system to track the progress of complex, multi-step agent tasks and allow users to 'step through' individual tool executions. large Implementing a hierarchical task tree and a step-through execution mode requires significant architectural changes to the core Scheduler and the introduction of complex state management within the Ink TUI. This involves modifying the task execution pipeline to support pausing/resuming and building a sophisticated UI component to visualize nested tool calls, which aligns with the criteria for Large effort (3+ days).
21424 perf(core): optimize shell execution and environment handling OPEN priority/p2, area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/21424 Optimize the performance of shell command execution and environment variable handling within the core agent loop. large Optimizing shell execution and environment handling involves deep platform-specific complexities, particularly regarding child process management and shell-specific behavior (PowerShell vs. POSIX). The task requires profiling and potentially refactoring the core execution path in ShellExecutionService, implementing efficient environment inheritance, and ensuring robustness across different OS environments, which aligns with the criteria for Large effort involving major subsystems and platform-specific child process management.
21410 "Feature Request: Native SOCKS5 proxy support to resolve frequent ""fetch failed"" errors on large contexts" OPEN priority/p2, area/core 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/21410 Add native support for SOCKS5 proxies to resolve network errors occurring in environments with restrictive connectivity. medium Implementing native SOCKS5 support requires more than a simple configuration change because the underlying 'undici' library used in fetch.ts does not natively support SOCKS protocols via its ProxyAgent. This task involves integrating a new dependency (e.g., socks-proxy-agent), refactoring the global dispatcher logic to switch between standard Agents, HTTP ProxyAgents, and SOCKS Agents based on the protocol, and ensuring that timeout and stream handling remain stable for large contexts as requested.
21400 Add an update command OPEN priority/p2, area/core, help wanted 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/21400 Implement an `/update` slash command that allows users to check for and install the latest version of the Gemini CLI directly from the terminal. medium Implementing an update command requires integrating with external registries (npm/GitHub) to check for versions, detecting the user's specific installation environment (npm, brew, uvx), and managing child processes to execute the update. This involves asynchronous flow control and cross-platform logic tracing, which fits the Medium effort criteria.
21373 feat: Display small tag instead of long version strings in CLI OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/21373 Shorten the version string displayed in the CLI header by using a compact 'tag' style (e.g., 'v0.40.0') instead of the full build/commit hash. small This is a localized UI/aesthetic adjustment involving simple string formatting or truncation in the header component. It falls under the 'UI/Aesthetic Adjustments' and 'String/Content Updates' criteria, requiring changes to likely only one file with no complex state management or architectural impact. In `packages/cli/src/ui/components/AppHeader.tsx`, add a helper to parse the version string and return only the major/minor/patch segments for display.
21368 Don't use Ctrl + B as shortcut OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/21368 Change the default keyboard shortcut for background task toggling to avoid conflicts with `Ctrl+B` commonly used in terminal multiplexers like tmux. small Changing a keyboard shortcut in an Ink-based CLI application is a highly localized fix. It involves identifying the specific input handler (likely using the useInput hook) and updating the conditional logic or configuration constant that triggers the background task view. This falls under the 'Trivial Logic/Config' category and should take less than a day to implement and verify. In `packages/cli/src/ui/contexts/KeypressContext.tsx`, update the mapping for toggling the background task view from `ctrl+b` to a different key combination, such as `ctrl+l` or `ctrl+alt+b`.
21285 Idea: Terminal Soundscapes (DX Sonification) for GSoC 2026 OPEN area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/21285 Implement an experimental 'Terminal Soundscapes' feature that provides optional audio feedback for various CLI states and transitions. large Implementing a cross-platform audio notification system involves significant platform-specific complexity, requiring the management of child processes (afplay, powershell, etc.) to ensure non-blocking execution within the Ink-based CLI. It qualifies as a major subsystem implementation that must synchronize with the core streaming state and handle diverse OS environments, aligning with the criteria for large effort.
21145 Support CamelCase and acronym matching in file search OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/21145 Enhance the fuzzy file search logic to support CamelCase matching (e.g., 'GH' matching 'GeminiHelper') and acronym-based filtering. medium Implementing CamelCase and acronym matching requires modifying the search logic in both the core file search utility and the autocomplete hook. It involves moving away from simple lowercase normalization to a case-sensitive or smart-case fuzzy matching algorithm (like AsyncFzf with proper configuration), which requires careful tuning of scoring and robust testing to ensure expected ranking behavior.
21144 [Epic] Improve overall file search and autocomplete experience OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/21144 A broad epic task to improve the overall performance, ranking, and user experience of file search and auto-completion across the CLI. large This is an epic encompassing multiple complex tasks including fuzzy matching algorithms, camelCase matching, and performance optimizations for large codebases. These improvements require architectural changes to filesystem indexing and search logic across both core and CLI packages, fitting the criteria for a large effort (3+ days).
20858 SDK: GeminiCliSession needs an approval callback mechanism (currently hardcodes PolicyDecision.ALLOW) OPEN status/need-triage, area/non-interactive, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/20858 Introduce an asynchronous approval callback mechanism in the SDK to allow programmatic control over tool execution, replacing the current hardcoded 'ALLOW' policy. medium This task requires modifying the SDK's session logic to support an asynchronous callback mechanism. It involves integrating the GeminiCliSession with the existing ConfirmationBus and PolicyEngine, ensuring that the execution flow correctly suspends and resumes based on external input. This falls under Service Integration and Asynchronous Flow in the Medium category.
20838 CTRL-z removes unfinished open questions in AskUser tool OPEN priority/p2, area/core, help wanted, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/20838 Fix a UI bug where pressing `Ctrl+Z` (Undo) incorrectly clears the active `AskUser` tool dialog or its internal state. medium The issue involves state management within the Ink/React TUI layer, specifically maintaining the input buffer state across process suspension (SIGTSTP/SIGCONT). This falls under the 'React/Ink State Management' and 'input buffers' category for Medium effort, as it requires tracing how the component lifecycle reacts to terminal signals and ensuring the TextInput state is not reset or incorrectly processed as an 'undo' command before the process backgrounds. In `packages/cli/src/ui/components/shared/TextInput.tsx`, ensure that the `ctrl+z` event calls `event.stopPropagation()` after updating the local buffer state to prevent it from reaching global command handlers.
20782 [Proposal] Stateful Remote WebSocket API for Interactive Control OPEN area/core, 🔒 maintainer only 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/20782 Design and implement a stateful remote WebSocket API to allow external applications to interact with and control an active agent session. large This proposal requires significant architectural changes, including the design and implementation of a new stateful WebSocket protocol and server component. It involves complex state serialization of the AgentScheduler, session persistence logic, and real-time command multiplexing, which aligns with the criteria for major subsystem development and core protocol changes.
20698 "Feature Request: 1. Please add a ""Side-by-Side"" diff view option for the ""Action Required"" confirmation prompt when modifying files. 2. Please stop stripping ANSI color codes from the output of `run_shell_command`, so external diff tools like `delta --colo" OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/20698 1. Implement a side-by-side diff view for file modifications. 2. Preserve ANSI color codes in the output of shell commands for compatibility with external tools like `delta`. medium Implementing a side-by-side diff view in Ink is a non-trivial UI task requiring layout management, line alignment logic, and terminal width handling. Additionally, modifying the shell tool to selectively preserve ANSI escape sequences involves adjusting output sanitization and serialization logic, which aligns with the Medium criteria for ANSI handling and UI state synchronization.
20672 feat(sdk): Python SDK for Gemini CLI Agent with programmatic access for the Python/ML ecosystem OPEN status/need-triage, area/non-interactive 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/20672 Develop a native Python SDK that provides programmatic access to the Gemini CLI agent, targeting the Python/ML ecosystem. large Developing a full Python SDK from scratch to mirror the TypeScript SDK is a major subsystem implementation. It requires porting core protocol handling (ACP), session management, and tool execution logic to a new language ecosystem, which involves significant architectural work and extensive testing to ensure parity, fitting the criteria for 3+ days of effort.
20480 Feature: evolve --resume to support resuming sessions from any folder via session ID OPEN area/core, help wanted 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/20480 Enhance the `--resume` command to support globally addressable session IDs, allowing users to resume a session from any folder regardless of where it was originally started. medium Implementing global session IDs requires modifying the session storage and retrieval logic to support cross-directory lookups. This involves updating the CLI argument parser to handle optional IDs, modifying the session manager to scan a global directory (e.g., ~/.gemini/sessions), and ensuring the UI displays the ID upon exit. It falls under Medium effort as it involves logic tracing, filesystem path resolution, and integration across the CLI, session management, and UI components. Update `resolveSession` in `packages/cli/src/utils/sessions.ts` to perform a recursive search in the global sessions root if the provided identifier does not match any session in the current project's subdirectory.
20476 Allow extensions to contribute status segments to the Footer OPEN area/extensions, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/20476 Implement a plugin system that allows CLI extensions to contribute custom status segments (text or icons) to the TUI footer bar. medium This task requires modifying the extension manifest schema, updating the ExtensionLoader to register new contribution types, and implementing state synchronization between the extension lifecycle and the Ink-based Footer component. It involves handling asynchronous data flows from external scripts or hooks and ensuring the UI updates reactively, which fits the criteria for Medium effort involving state management and service integration.
20227 feat(cli): Add ability to cycle through models and mark favorites OPEN priority/p3, area/core, status/needs-info, help wanted 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/20227 Add a feature to cycle through available models using a keyboard shortcut and allow users to mark specific models as favorites for quick access. medium Implementing model cycling and favorites requires changes across multiple layers: updating the configuration schema (Zod), modifying the ModelDialog Ink component for stateful toggling, and implementing global keyboard listeners for cycling. This involves state synchronization between the configuration and the active UI session, which fits the criteria for Medium effort involving React/Ink state management and integration across components. Add `ui.favoriteModels` to `settingsSchema.ts`. In `packages/cli/src/ui/contexts/KeypressContext.tsx`, map a new shortcut (e.g., `Ctrl+M`) to a function that calls `config.setNextFavoriteModel()`.
20118 Add oneMCP Support to Gemini-CLI via MCPSDK Integration OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/20118 Integrate the 'oneMCP' SDK into the core MCP management layer to enhance compatibility with a broader range of server types and protocol versions. large Integrating the MCPSDK to replace a custom authentication and protocol implementation is a significant architectural change to a core subsystem. According to the criteria, modifications to the Model Context Protocol (MCP) integrations and major subsystem refactoring fall under the 'Large' effort level, as it involves deep logic changes in mcp-client-manager.ts and potentially impacts tool discovery and execution flows.
19835 Support for live streaming in custom discovered tools OPEN area/core, help wanted, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/19835 Enable live output streaming for custom tools discovered via extensions or the workspace, allowing them to report progress and partial results back to the TUI. medium Implementing live streaming for custom tools requires modifying the tool execution pipeline to handle asynchronous process streams instead of simple buffered output. This involves updating the discovery schema, adjusting the Scheduler's handling of tool results, and managing real-time state updates in the Ink-based UI components, which aligns with the criteria for logic tracing and state synchronization across multiple components.
19757 gemininpm install -g @google/gemini-cli OPEN status/need-triage, area/core 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/19757 Correct a typo or formatting error in the CLI help text or documentation regarding the installation command. small The issue involves correcting a typo in the installation command within the documentation or CLI help text. This is a static content update that is highly localized and does not affect application logic, fitting the criteria for a Small effort level. Locate the string 'gemininpm' in the project (likely in `README.md` or a command description) and correct it to 'npm'.
19672 Truncate filepaths based on terminal width OPEN area/core, 🔒 maintainer only 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/19672 Implement smart path truncation in the TUI to ensure that long file paths are abbreviated (e.g., using '...') based on the current terminal width. small This is a localized UI enhancement involving a string manipulation utility and updates to a few Ink components to react to terminal width. It falls under UI/Aesthetic adjustments and trivial logic for formatting data types, fitting the criteria for a task completed in less than a day. Add a `truncatePath(path: string, maxLength: number)` helper to `packages/cli/src/ui/utils/textUtils.ts` that preserves the filename and leading directories while contracting the middle. Use this in `AppHeader` for the workspace path.
19661 Refactor loadCliConfig to support a minimal initialization path for auth bootstrap OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/19661 Refactor the configuration loading process to support a 'minimal' initialization mode, specifically for bootstrapping authentication without requiring a full workspace check. medium Refactoring a 440-line core initialization function with 80+ parameters into a tiered or decoupled structure requires significant logic tracing and state management. It involves identifying and isolating dependencies like FileDiscoveryService and ExtensionManager to create a 'minimal' path for auth, which necessitates careful validation to ensure no regressions in the primary CLI execution flow.
19619 Request for Korean translation of CLI interface (commands and descriptions) OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/19619 Add internationalization (i18n) support and provide a Korean translation for the CLI's commands, descriptions, and user interface elements. large Implementing internationalization (i18n) is a cross-cutting architectural change that requires introducing a new subsystem. It involves refactoring all hardcoded strings across the entire codebase, implementing a translation management framework, and adding configuration logic for locale switching, which fits the criteria for a major subsystem implementation.
19602 Feature: Manually provide new session UUID via command line arg OPEN area/core, help wanted 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/19602 Provide an option to manually specify a session UUID via a command-line argument when starting the CLI. small Adding a command-line flag to expose an existing configuration property is a straightforward task. It involves updating the Yargs definition and ensuring the value is passed to the Config instance, which is a localized change with minimal logic complexity. Add the `--session <uuid>` option to the Yargs configuration in `packages/cli/src/config/config.ts` and use it to initialize the `Config` instance in `gemini.tsx`.
19583 feat(policy): support granular skill activation permissions OPEN priority/p2, area/core, help wanted, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/19583 Extend the policy engine to support granular permissions for activating and using specific agent skills. medium The task requires integrating changes across several layers of the application: updating policy schemas and types, modifying the rule generation logic to support regex-based argument matching for specific skills, and updating the tool invocation flow to capture and persist these granular permissions. This involves logic tracing and state synchronization between the UI/CLI decision and the policy engine's persistence layer, fitting the criteria for a medium effort task.
19249 feat: emit token usage metadata via ACP extNotification in zed-integration OPEN area/core, help wanted, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/19249 Broadcast token usage metadata via ACP extension notifications for use in the Zed editor integration. small The change is highly localized to the ACP server implementation within the zed-integration package. It involves capturing existing metadata from the Gemini API stream and emitting a standard notification, requiring minimal logic (~30 lines) and no architectural changes. In `packages/core/src/code_assist/server.ts`, locate the end of the `sendMessage` handler and call `sendNotification('gemini/usageUpdate', stats)` to push the metadata to the connected host.
19067 use `/stats` to see the current Status , but how can use `gemini -p` to see current Status. OPEN area/non-interactive, 🔒 maintainer only 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/19067 Add the ability to view cumulative session statistics using the non-interactive `--prompt` mode. small The TelemetryService already tracks the required usage statistics. Implementing this feature involves a localized change to the non-interactive execution path (likely in the CLI entry point) to retrieve and display these existing metrics after a prompt is processed, fitting the criteria for trivial logic and formatting. Add a `--stats` boolean flag to `packages/cli/src/config/config.ts`. In `nonInteractiveCli.ts`, if this flag is set, fetch the stats from the telemetry service and log them to stdout before exiting.
19018 Update the file size limit for inline files to 100MB OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/19018 Increase the maximum allowable file size for inline `@` mentions and direct file reads to 100MB. small The task involves updating a single constant value (MAX_FILE_SIZE_MB) or a hardcoded numeric limit within the file utility layer. This is a trivial configuration change that is highly localized to one or two files and requires no complex logic or architectural adjustments. In `packages/core/src/utils/fileUtils.ts`, locate the `MAX_FILE_SIZE_BYTES` constant and update its value to `100 * 1024 * 1024`.
18990 Feature Request: The CLI input prompt does not support Tab-completion for file paths, which makes working with files inconvenient. Please consider adding this standard shell feature to improve usability. OPEN area/core, help wanted, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/18990 Implement standard shell-style Tab-completion for file paths directly in the input prompt, without requiring the `@` prefix. medium Implementing shell-style tab completion requires refactoring the existing completion logic in useAtCompletion.ts to decouple it from the '@' trigger. This involves managing React/Ink state for the input buffer, integrating with the FileDiscoveryService for real-time path resolution, and handling asynchronous search results within the TUI, which fits the criteria for logic tracing and state synchronization across components.
18871 [Feat] Add a command to delete current session upon exit OPEN priority/p3, area/core, area/security, help wanted 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/18871 Add a new command or flag to allow users to delete the current session's data (history and metadata) upon exiting the CLI. small The session deletion logic is already implemented in the codebase. This task only requires adding a new slash command or a flag to the existing exit command and calling the existing deletion utility before process termination. This is a localized change involving trivial logic and fits the criteria for a small effort level. Add an `exit --delete` subcommand in `packages/cli/src/ui/commands/exitCommand.ts`. The action should trigger `sessionSelector.deleteSession()` for the current active UUID before terminating the process.
18761 [Feature Request] Interactive 'Stop Waiting' mechanism to capture partial output from blocking commands OPEN priority/p3, area/core, 🔒 maintainer only 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/18761 Implement an interactive 'Stop Waiting' mechanism that allows users to interrupt a long-running shell command and capture its partial output as the tool result. medium Implementing a 'Stop Waiting' mechanism requires state synchronization between the TUI (Ink components) and the ShellToolInvocation via the MessageBus. It involves modifying the asynchronous execution flow to handle a manual interrupt signal, ensuring the child process is terminated gracefully while the ShellExecutionService flushes and returns the partial output buffer instead of a standard error or empty result.
18692 `doctor` command for installation and configuration troubleshooting OPEN priority/p3, area/core, 🔒 maintainer only 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/18692 Implement a `doctor` command to provide a diagnostic overview of the installation, authentication state, and configuration to aid in troubleshooting. medium Implementing a diagnostic suite requires integrating with multiple subsystems including MCP servers, extensions, and configuration management. It involves logic tracing across these components to validate loading states and filesystem permissions, as well as handling asynchronous checks for updates and network connectivity, fitting the criteria for service integration and async flow management.
18654 Enhanced Copy Workflow via External Editor Integration OPEN priority/p2, area/core, help wanted 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/18654 Enhance the copy workflow by allowing users to pipe the current chat history or specific code blocks into their external system editor (e.g., vim, nano). medium Implementing the /copy_editor command requires serializing the chat history into a formatted markdown string, managing temporary file lifecycle, and integrating with the existing editor utility. This involves state synchronization (retrieving the full session history) and handling asynchronous process execution for both terminal and GUI-based editors, which aligns with the Medium effort criteria for service integration and async flow management.
18612 [VSCode Plugin] Unable to change root directory OPEN priority/p2, area/core, help wanted 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/18612 Fix a bug in the VSCode extension where users are unable to change the root workspace directory after the initial setup. medium The issue requires implementing or fixing event listeners for VSCode workspace changes (onDidChangeWorkspaceFolders) and ensuring the updated root path is synchronized with the CLI agent. This involves state management and cross-component communication between the VSCode extension and the backend service, fitting the criteria for logic tracing and state synchronization.
18487 A2A Server should support multiple workspace directories OPEN area/core, help wanted 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/18487 Extend the Agent-to-Agent (A2A) server to support multi-root workspaces, allowing it to manage files and context across multiple independent directories. large Modifying the A2A server to support multi-root workspaces is an architectural change that falls under the 'Large' criteria. It requires refactoring the core configuration loader, path resolution logic, and file discovery utilities to handle multiple independent directories, which impacts how the server manages context and executes tools across different workspace roots.
18388 Delete option for MCP OPEN priority/p2, area/core, help wanted, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/18388 Add a delete option to the `/mcp` command to allow removing configured MCP servers from the session. medium Implementing a delete option for MCPs involves logic tracing and state synchronization across the mcpClientManager, the configuration persistence layer, and the Ink-based UI. It requires handling asynchronous filesystem updates and ensuring the React UI state correctly reflects the removal of the server, which aligns with the criteria for state management and service integration. In `packages/cli/src/ui/commands/mcpCommand.ts`, add a `delete <name>` subcommand that calls `agentContext.mcpClientManager.removeServer(name)` and updates the persistent config.
18385 Support Git Submodules in Extensions OPEN area/extensions, status/possible-duplicate, help wanted 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/18385 Support extensions that are registered as Git submodules within the user's configuration or workspace. medium Supporting Git submodules requires modifying the extension installation service to handle recursive cloning or post-clone submodule initialization. This involves updating asynchronous control flows, potentially adjusting how shell commands are executed, and validating filesystem states, which fits the criteria for Medium effort involving service integration and async flow management.
18345 "RFC: Standardize ""Reload/Refresh"" Command Naming Conventions" OPEN priority/p2, area/core, help wanted, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/18345 Standardize the naming of 'Reload' and 'Refresh' commands across all subsystems (Agents, Extensions, Skills) to improve consistency. small This task involves updating command metadata (names and aliases) across a few files to ensure naming consistency. It is a localized string-level change that does not impact core logic, state management, or complex asynchronous flows, fitting the criteria for a small effort level. Update the `name` and `aliases` properties in `agentsCommand.ts`, `extensionsCommand.ts`, and `skillsCommand.ts` to use a unified 'reload' verb.
18266 Align hook behavior for permission requests/decision control with Claude OPEN status/need-triage, area/non-interactive 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/18266 Align the behavior of agent hooks with standard industry patterns, allowing hooks to influence and override tool permission decisions. medium This task requires re-sequencing the tool execution pipeline within the Scheduler to trigger hooks before the UI permission prompt. It involves logic tracing across the hook system and the task execution flow, ensuring that hook decisions (allow/deny) correctly bypass or trigger the interactive UI state, which falls under medium-level integration and async control flow.
18086 npx might block in YOLO mode OPEN status/need-triage, area/non-interactive, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/18086 Automatically suppress interactive prompts from `npx` by appending the `--yes` flag when the CLI is running in YOLO mode. small The fix is highly localized to the shell tool implementation. It involves detecting if a command starts with 'npx' and conditionally appending the '--yes' flag based on the existing YOLO mode state. This falls under trivial logic/config adjustments and is expected to be constrained to a single file. In `packages/core/src/tools/shell.ts`, modify the command string before execution if `config.isYoloMode()` is true and the command begins with `npx`.
18034 Make it easier to discover commonly needed slash and key commands to users OPEN area/core, Stale 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/18034 Improve the discoverability of common slash commands and keyboard shortcuts through UI hints or an enhanced help overlay. small This task involves UI/aesthetic adjustments and content updates within the Ink-based CLI. It primarily requires adding static text hints or updating the existing HelpDialog component to display keyboard shortcuts and slash commands, which is a localized change with minimal logic complexity. In `packages/cli/src/ui/components/AppHeader.tsx`, add a small `<Text>` hint like '(? for help)' and ensure the `/help` command provides a concise table of essential shortcuts.
17851 Up arrow shouldn't go directly up in history when the prompt has multiple lines OPEN priority/p2, area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/17851 Update the input prompt logic so that the Up arrow moves the cursor vertically within a multi-line buffer before fetching items from the chat history. medium This task involves modifying the state management and key handling logic within the TextInput component to track cursor position relative to line breaks. Since it involves UI state synchronization and input buffer manipulation in an Ink-based component, it aligns with the Medium effort criteria.
17637 Skip redundant GEMINI.md loading in partialConfig during startup OPEN area/core, 🔒 maintainer only 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/17637 Optimize startup performance by skipping the redundant loading of `GEMINI.md` instruction files during the initial configuration bootstrap pass. small The task involves adding a boolean flag to the `loadCliConfig` function and updating a few call sites to skip I/O-heavy file loading when only authentication is required. This is a localized logic change with a clear implementation path, fitting the criteria for a small effort level. Add a `skipInstructions` boolean to the `LoadConfigOptions` in `packages/core/src/config/config.ts` and use it to conditionally call `instructionHydrator.load()`.
17421 Generalize subagents trust UX for extensibility OPEN area/extensions, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/17421 Generalize the trust and acknowledgment system for subagents to allow third-party agent extensions to participate in the same security UX. medium Generalizing the trust UX involves refactoring the AcknowledgedAgentsService into a more generic extensibility trust service, updating the underlying JSON storage schema, and modifying the React/Ink UI components (AgentConfigDialog) to handle multiple categories (Hooks, Skills, Subagents). This requires logic tracing across service integration points and state management in the CLI UI, fitting the criteria for Medium effort.
17389 Windows CLI: Scroll wheel affects input area instead of output history OPEN priority/p2, area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/17389 Fix a Windows-specific bug where mouse scroll wheel events are incorrectly captured by the input area instead of scrolling the history. medium This is a platform-specific UI state and event handling issue on Windows. It requires tracing how mouse wheel escape sequences are processed within the Ink-based terminal UI and ensuring they are correctly routed to the scrollable history component rather than the input buffer. This falls under the Medium criteria for logic tracing and UI state synchronization across components.
17381 vi mode not documented OPEN priority/p3, area/extensions, area/documentation, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/17381 Add comprehensive documentation for the CLI's 'vi mode', including supported keybindings and configuration options. small This is a documentation-only task involving content updates to the keyboard shortcuts page. It does not require any code changes or logic modifications, fitting the criteria for a small effort level. Create a new `docs/vi-mode.md` file and link to it from the main `README.md`. Document shortcuts like `i`, `Esc`, `k`, `j` and the `/vi` command.
17361 feat(cli): Add configurable escape key sequences for vim mode OPEN priority/p2, area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/17361 Support configurable escape key sequences (e.g., 'jj' or 'jk') to exit 'vi mode' Insert state, similar to standard Vim configurations. medium Implementing configurable escape sequences requires modifying the useVim hook to include a keypress buffer and a timeout mechanism. This involves complex state management to determine whether to intercept characters or flush them to the text buffer, which requires careful synchronization of React state and asynchronous timing logic.
17034 Improvement: Policy Engine - Support filtering by Runtime Environment (Sandboxed vs. Local) OPEN priority/p1, area/core, area/enterprise, 🔒 maintainer only, kind/enhancement, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/17034 Extend the policy engine to allow filtering rules based on the runtime environment (e.g., 'local' vs. 'sandboxed'). medium This task requires modifications across multiple files including type definitions, Zod schema validation in the TOML loader, and the core matching logic in the policy engine. It involves logic tracing to ensure the runtime environment state is correctly propagated and validated against the new policy rules, fitting the criteria for medium effort involving parsers and logic synchronization.
16718 update tips array with recent features and commands [Phrase Cycler] OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/16718 Update the rotating 'tips' array with recent features like fuzzy search, thinking budget, and new keyboard shortcuts. small Updating a static array of strings for UI tips is a localized content update that requires no logic changes or complex state management, fitting the criteria for a small effort task. Locate `packages/cli/src/ui/constants/tips.ts` and add the new feature descriptions to the `TIPS` array.
16716 [Refactor] Decouple Tool-Specific Cancellation Logic from SchedulerStateManager OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/16716 Refactor the `SchedulerStateManager` to decouple tool-specific cancellation logic, allowing tools to define their own 'cancelled' display state. medium This refactor requires changes across multiple layers of the codebase, including core type definitions in the confirmation-bus, the state transition logic in SchedulerStateManager, and specific tool implementations. It involves decoupling tool-specific logic into a generic interface, which requires careful validation to ensure that UI-side features (like diff preservation for the 'edit' tool) are not broken during the transition.
16606 Supporting Input Buffer Manipulation in CLI OPEN area/core, 🔒 maintainer only 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/16606 Implement support for input buffer manipulation, allowing the agent to suggest a response and place it directly into the user's terminal input area for review or editing. medium Implementing input buffer manipulation requires modifying the React state machine within the AppContainer to support a new 'Drafting' state. It involves synchronizing tool execution results with the TextInput component's internal buffer, which aligns with the Medium criteria for React/Ink state management and UI state synchronization.
16509 OpenCode style terminal OPEN area/core, 🔒 maintainer only 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/16509 Re-architect the CLI layout to support a sidebar-based task view and a persistent side-by-side diff view, similar to the OpenCode UI. large Implementing a multi-pane UI with a persistent sidebar and side-by-side diff view requires a fundamental re-architecture of the existing Ink-based layout system. This involves complex state management for focus across multiple panes, handling terminal resizing for split-screen views, and creating new high-level layout components, which falls under the category of a major subsystem redesign.
16419 Automation: move prompts from workflows into custom commands OPEN priority/p2, area/non-interactive, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/16419 Automate the creation of custom slash commands by allowing them to be defined as prompt templates in TOML files. medium Implementing a custom command loader requires developing a new TOML parser and validation logic (likely using Zod) to map external files to the internal SlashCommand interface. This involves logic tracing across the core and CLI packages, handling filesystem resolution, and ensuring the dynamic commands integrate correctly with the existing command router and prompt construction logic.
16357 [Feature Request] Advanced GNU Readline- / Zsh- / Emacs-style Keybindings and Multiline Navigation OPEN priority/p2, area/core, 🔒 maintainer only, status/bot-triaged, kind/enhancement 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/16357 Implement advanced Emacs/Readline-style keybindings (e.g., Ctrl+K, Ctrl+Y, Alt+F, Alt+B) for the TUI input prompt. medium Implementing advanced Readline/Emacs keybindings requires significant logic enhancements to the TextInput component's state management. It involves calculating cursor offsets for word-based navigation, handling multiline buffer logic for 'smart' line jumps, and managing a kill-ring state. This falls under the Medium criteria for React/Ink state management and UI synchronization.
16341 Copy text button OPEN area/extensions, help wanted 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/16341 Add a 'Copy text' button or hotkey to code blocks and agent responses in the chat history. medium Implementing a copy-to-clipboard feature in a terminal UI (Ink) requires more than a simple UI tweak. It involves managing focus states to determine which message or code block is active, integrating a cross-platform clipboard library, and handling the stripping of ANSI escape sequences from the text before copying. This aligns with the Medium criteria for state management and service integration. In `GeminiMessageContent.tsx`, add a focus-aware key handler (e.g., for the 'c' key) that calls `clipboardy.writeSync()` with the content of the currently focused code block.
16272 Improving logging on agents refresh OPEN area/core, aiq/agent, 🔒 maintainer only 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/16272 Improve the logging and success messaging for the `/agents reload` command to provide more context on what was updated. small This task involves modifying the success message of a specific CLI command. It is a localized change within the command handler to include dynamic data (like the count of agents) or additional instructional text, fitting the criteria for string/content updates and trivial logic adjustments. Update `agentsReloadCommand.action` in `agentsCommand.ts` to return a message containing the number of agents successfully re-hydrated from the registry.
15618 Vim mode should align with Bash vim mode, NOT Vim editor OPEN area/core, help wanted, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/15618 Align the CLI's 'vi mode' implementation with standard Bash/Readline vi-mode behavior, including starting in Insert mode and supporting history navigation. medium Aligning the Vim mode with Bash/Readline behavior requires refactoring the state machine in vim.ts to handle history navigation (k/j) and standard shell-like key mappings. This involves state synchronization between the Vim hook and the CLI's history state, as well as logic tracing for multi-key operators like 'dd'. It fits the Medium criteria for React/Ink state management and UI state synchronization.
15493 """Feature Request: Allow configuring the default shell execution environment (e.g., pwsh, bash, nu) instead of hardcoded powershell.exe on Windows.""" OPEN status/need-triage, area/core 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/15493 Allow users to configure the default shell executable (e.g., pwsh, bash, nu) used by the `run_shell_command` tool, particularly on Windows where it defaults to legacy PowerShell. medium Implementing this requires modifying the configuration schema (Zod) and propagating the new setting to the ShellExecutionService. Beyond just replacing the executable path, the implementation must handle shell-specific invocation arguments (e.g., 'bash -c' vs 'powershell -Command') and ensure that existing command-wrapping logic (like PID capturing) remains compatible with the user-selected shell. This involves logic tracing and integration across the configuration and service layers. Add `tools.shell.executablePath` to `settingsSchema.ts`. Update the `ShellTool` in `shell.ts` to use `config.getSetting('tools.shell.executablePath')` when spawning the child process.
14643 Please add ability to have an Audio Notification whenever the chat replies OPEN priority/p2, area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/14643 Implement an optional audio notification (system bell or sound file) that triggers whenever the agent completes a response turn. small This is a localized enhancement to the TUI. The turn lifecycle is already managed within the AppContainer, and triggering a terminal bell or a simple audio utility call upon state transition from 'streaming' to 'idle' is a trivial logic addition that fits the criteria for a small effort task. In `packages/cli/src/ui/AppContainer.tsx`, add a `useEffect` that monitors the `turnStatus`. When the state transitions from 'active' to 'idle' and a new response is present, execute `process.stdout.write('\x07')`.
13860 how to attach image in vscode gemini code assist? OPEN status/need-triage, priority/p1, area/extensions 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/13860 Enable image attachment support within the VSCode integrated terminal for the Gemini Code Assist extension. large Implementing image attachment support requires significant architectural and protocol changes to the Model Context Protocol (MCP) and Agent-to-Agent (A2A) server to handle binary data or file references. It involves building a custom bridge between the VSCode Extension API and the CLI backend, as well as updating the Gemini API integration to support multimodal inputs, which constitutes a major subsystem enhancement.
13400 Request for a /context command. OPEN priority/p2, area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/13400 Implement a `/context` slash command that displays a detailed breakdown of the current token usage and context window consumption. medium Implementing a /context command requires integrating with the existing token counting logic, aggregating data from the current conversation state (history, attachments, system instructions), and building a new Ink-based UI component to display the breakdown. This involves state management and service integration across the CLI's command handling and display layers, fitting the criteria for logic tracing and UI state synchronization.
8474 Feature Request: Add a command to view daily cumulative usage statistics OPEN priority/p2, area/core, 🔒 maintainer only, kind/enhancement 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/8474 Add a command to view daily cumulative API usage statistics, including total tokens used across all sessions in the last 24 hours. medium Implementing daily usage statistics requires introducing a persistent storage mechanism (e.g., a local JSON-based telemetry log) to track data across multiple CLI sessions. This involves modifying the core API response handling to log usage data and creating a new command to aggregate and display these stats, which falls under the 'Service Integration' and 'Asynchronous Flow' criteria for Medium effort.
2493 Isolate Gemini CLI from Project-Specific .env Files OPEN priority/p2, area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/2493 Provide a mechanism to isolate the Gemini CLI from project-specific `.env` files, preventing credential conflicts with the user's local projects. small The task involves adding a configuration flag and a CLI argument to bypass local environment loading. This is a localized logic change within the settings management and CLI entry point, fitting the criteria for trivial logic/config updates and straightforward CLI flag additions. Add an `ignoreLocalEnv` setting to `settingsSchema.ts`. In `loadEnvironment` (settings.ts), check this setting and skip the `findEnvFile(process.cwd())` step if it is true.
2465 Language Server Protocol support for the Gemini CLI OPEN priority/p2, area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/2465 Implement support for the Language Server Protocol (LSP) to provide the agent with deep code intelligence, including diagnostics and auto-completion. large Implementing LSP support is a major architectural expansion that requires building a client-side implementation of the Language Server Protocol, managing the lifecycle of external server processes via child process management, and integrating these capabilities into the agent's toolset. This involves complex asynchronous flows, protocol-level changes, and significant new subsystem development, fitting the criteria for a Large effort level.
2094 Show costs OPEN priority/p2, area/core, status/bot-triaged, kind/enhancement 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/2094 Convert and display the estimated monetary cost of API usage alongside token counts in the CLI statistics. small This is a localized UI and logic update. It involves creating a static pricing lookup table for Gemini models and updating the existing statistics display component to calculate and format the cost. This falls under trivial logic and UI adjustments within the defined criteria. Add a model-to-price mapping in `packages/core/src/config/models.ts`. Update `packages/cli/src/ui/components/StatsDisplay.tsx` to calculate and render the cost string (e.g., '$0.02') based on the current usage counts.
2065 Add Codebase Indexing for Enhanced Context and Efficiency OPEN priority/p2, area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/2065 Implement codebase indexing capabilities to provide the agent with a global understanding of the project's structure, symbols, and dependencies. large Implementing codebase indexing is a major subsystem addition that involves recursive filesystem scanning, multi-language parsing (AST or symbol extraction), persistent storage (SQLite or vector store), and the creation of new retrieval tools for the agent. This falls under the 'Major Subsystems' and 'Architectural Changes' criteria, requiring significant effort for performance optimization and integration.
1871 Should reply in the same language as the question OPEN priority/p2, area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/1871 Update the agent to automatically detect the user's language and respond in the same language. small This task primarily involves updating the system instructions or base prompt templates to include a directive for language consistency. It is a localized string-based adjustment to the agent's configuration and does not require complex logic, external libraries, or architectural changes. In `packages/core/src/core/geminiChat.ts`, add a lightweight language detection call on the user's first prompt and append a 'Respond in [Language]' instruction to the system prompt.
1 Issue ID Title Status Assignee Labels Last Sync Link analysis effort_level reasoning recommended_implementation
2 25638 ![high](https://www.gstatic.com/codereviewagent/high-priority.svg) open 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/25638 Optimize retrieval of machine hostname by moving `os.hostname()` from the `Footer` component render cycle to a module-level constant. small This is a highly localized static refactoring task that involves moving a single system call to a module-level constant in one file. It fits the criteria for a small effort level as it is a trivial optimization with no complex logic or state management involved. In `Footer.tsx`, import `os` from `node:os`. Move `os.hostname()` to a `const HOSTNAME = os.hostname();` declaration outside the component function.
3 25573 Support boolean types when configuring `settings.json` via environment variables OPEN area/core, help wanted, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/25573 Allow environment variables like `${GEMINI_AUTO_THEME:-true}` to be correctly cast to boolean types during settings validation. small The fix is highly localized to the settings-validation.ts file. It requires a simple modification to the buildZodSchemaFromJsonSchema function to add a Zod preprocessor for boolean types, casting the strings 'true' and 'false' to actual booleans. This falls under the criteria of casting/formatting simple data types and localized fixes with a clear root cause. In `packages/cli/src/config/settings-validation.ts`, update the boolean schema definitions to use `z.preprocess()` which converts strings `'true'` or `'false'` into actual boolean values.
4 25571 feat: add machine hostname to CLI interface OPEN area/core, help wanted, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/25571 Retrieve and display the machine's hostname in the CLI interface (header or footer). small Retrieving the machine hostname via Node.js 'os.hostname()' and displaying it within an existing Ink component like AppHeader or Footer is a localized UI adjustment with trivial logic, requiring minimal changes to 1-2 files. Import `os` in `packages/cli/src/ui/components/AppHeader.tsx`. In `renderMetadata`, add a new `<Text>` component that displays the hostname retrieved via `os.hostname()`.
5 25494 [Voice] Cursor-Aware Insertion OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/25494 Splice transcribed voice text at the current cursor position in the input buffer instead of appending it. large While the logic to splice a string at a specific index is simple, the previous analysis indicates that the entire Voice Mode transcription pipeline and WhisperModelManager are currently missing from the codebase. Implementing this feature requires the foundational voice infrastructure, which falls under the 'Major Subsystems' category for Large effort.
6 25496 [Voice] Whisper Model Mirroring OPEN area/core, area/platform, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/25496 Mirror Whisper model weights to internal storage (GCS) and update the manager to download from the new locations. medium The task requires infrastructure setup (GCS bucket) and security evaluation for hosting model weights, which falls under service integration. While the code change to update URLs is simple, the requirement to evaluate and implement secure hosting for large binary assets, combined with the fact that the target subsystem (Voice) is currently being integrated, places this in the 1-3 day range.
7 25493 [Voice] Dynamic Visual Feedback (Audio Wave) OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/25493 Implement a dynamic ASCII/Unicode audio wave animation to replace the static 'Listening...' text during voice recording. medium Implementing a dynamic ASCII animation in Ink requires managing React state and effects to handle the animation loop, as well as synchronizing the UI state with the underlying audio recording lifecycle. This involves logic tracing and integration within the CLI's UI components, fitting the Medium effort criteria for React/Ink state management and UI synchronization.
8 25490 [Voice] Optimize Screen Real Estate (Banner) OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/25490 Modify the Voice mode banner ('> Voice mode: Hold Space to record (Esc to exit)') to be transient or removable to save screen real estate. small The task is a localized UI/Aesthetic adjustment focused on modifying or removing a specific Ink component (the Voice banner). It involves minor changes to the UI layout and potentially simple state management for transience (e.g., a timer or visibility toggle), which falls under the criteria for a small effort level (<= 1 day). In the Voice mode UI component, introduce a 'visible' state initialized to true and use a useEffect hook with a setTimeout to set it to false after 5 seconds. Conditionally render the banner text based on this state to make the instructions transient rather than persistent.
9 25491 [Voice] Privacy & Compliance UX Warning OPEN area/core, area/security, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/25491 Add a privacy and compliance UX warning detailing data flow when the Gemini Live backend is enabled for voice. medium Implementing a privacy and compliance warning requires defining new configuration keys in the settings schema and adding logic to the CLI's UI (Ink components) to trigger a notice. Since the requirement includes showing the warning 'upon first enabling,' it involves state management to track user acknowledgement or the initial toggle event, which fits the criteria for logic tracing and UI state synchronization.
10 25492 [Voice] Enhance `/voice-model` Menu Navigation OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/25492 Update the `/voice-model` selection menu so that pressing `Return` selects the model and automatically closes the dialog. small The task involves a localized UI/UX refinement within a single Ink component (VoiceModelDialog). It requires updating the 'Return' key event handler to trigger the dialog's dismissal logic immediately after selection. This is a trivial logic adjustment that does not involve complex state synchronization or architectural changes, fitting the criteria for a Small effort level. In `VoiceModelDialog.tsx`, update the `handleSelect` callback to invoke the `onClose` function immediately after the model selection logic is executed.
11 25478 Feature Request: Universal RTL and BiDi Support for Terminal Rendering OPEN area/core, help wanted, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/25478 Implement a bidirectional (BiDi) and RTL text rendering engine for the CLI that preserves ANSI escape codes and ensures precise line wrapping. large Implementing a comprehensive BiDi and RTL engine for a terminal environment is a major subsystem task. It requires complex algorithmic logic to handle the Unicode Bidirectional Algorithm (UBA) while preserving ANSI escape sequences for styling. Integrating this into the existing Ink-based rendering pipeline, ensuring correct line-wrapping without vertical displacement, and managing cross-platform terminal inconsistencies constitutes significant architectural complexity.
12 25439 A large number of logs leads to inefficiency in troubleshooting and affects scrolling performance OPEN area/core, help wanted, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/25439 Improve the debug log display by adding classification (filtering) and search functionality to handle large volumes of logs without affecting TUI performance. medium Implementing log classification and search functionality within the Ink-based TUI requires managing React state for search queries and filtered results, handling input focus transitions, and ensuring UI synchronization. This aligns with the Medium criteria for state management and UI interaction logic.
13 25380 Support per-project local settings OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/25380 Add support for a local-only configuration file (`.gemini/settings.local.json`) that is merged into the settings chain but not committed to git. small Adding support for a local configuration file involves updating the existing tiered settings loading logic to include an additional file path and merging it into the priority chain. This is a localized change within the configuration subsystem and fits the criteria for a small effort task. In `loadSettings` in `packages/cli/src/config/settings.ts`, add a check for the existence of `.gemini/settings.local.json`. If it exists, load and merge it after the standard workspace settings but before returning the final merged object.
14 25184 Feature Request: Seamless WSL2 Support on Windows (Path Translation, Unified Session Memory & Windows based Credentials) OPEN priority/p2, area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/25184 Implement WSL-aware mode to normalize paths, project IDs, and credential storage between Windows and WSL environments. medium Implementing WSL-aware path normalization and credential bridging requires detecting the WSL environment, translating paths between Linux and Windows formats (e.g., /mnt/c/ vs C:\), and ensuring consistent project hashing. This involves logic tracing across path resolution and session management modules to ensure unified session memory and credential access across OS boundaries, which requires robust testing on both environments. Update `listSessions` in `packages/cli/src/utils/sessions.ts` to accept an optional `filter` string. Use this string to filter the `sessions` array before the `.forEach` display loop.
15 25012 Add a setting to control @ file path context in VSCode terminal OPEN area/core, status/needs-info, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/25012 Introduce a setting to control whether `@` file path mentions in the VSCode terminal are relative to the current folder or the entire workspace. medium Implementing this requires adding a new configuration property to the settings schema, updating the AtFileProcessor to check this setting, and potentially modifying the path resolution logic in the core library's readPathFromWorkspace function. While the logic change is localized, ensuring consistent path resolution behavior across different terminal environments and operating systems requires careful validation and testing. Add `ui.fileAtMentionScope` (enum: 'cwd' | 'workspace') to `settingsSchema.ts`. Update `atFileProcessor.ts` to filter the files retrieved from `readPathFromWorkspace` based on this setting.
16 24812 File and code references shall be hyperlinks OPEN priority/p3, area/core, help wanted, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/24812 Convert file and code references in the CLI output to clickable hyperlinks using the OSC 8 terminal escape sequence. medium Implementing OSC 8 hyperlinks requires creating a utility for escape sequences, detecting terminal support, and modifying multiple UI components (Markdown renderer and Tool output handlers) to identify and wrap file paths. This involves logic tracing across the UI layer and adjustments to the Markdown parsing/rendering logic, which aligns with the Medium effort criteria for integration across components and parser modifications. In `packages/cli/src/ui/components/AskUserDialog.tsx`, wrap the `prompt` text in a `<Text bold color={theme.status.warning}>` component to make it stand out from standard chat messages.
17 24690 --list-sessions does not support --output-format json OPEN priority/p3, area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/24690 Enable raw JSON output for the `--list-sessions` command when the global `--output-format json` flag is used. small The fix is highly localized to the `listSessions` function in `packages/cli/src/utils/sessions.ts`. It requires a simple conditional check on the `config` object to determine if JSON output is requested and then serializing the existing `sessions` array. This falls under trivial logic and formatting adjustments, fitting the criteria for a small effort task. In `listSessions` (packages/cli/src/utils/sessions.ts), check `config.getOutputFormat()`. If it equals `'json'`, use `writeToStdout(JSON.stringify(sessions))` and return early.
18 24687 allow listing all sessions, not only ones for current directory OPEN priority/p3, area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/24687 Allow the `--list-sessions` command to discover and display sessions from all projects/directories, not just the current one, and include the directory path in the output. medium Implementing a global session list requires modifying the session manager to traverse all subdirectories within the ~/.gemini/sessions storage path, rather than just the current project's hash-based directory. This involves asynchronous filesystem operations, potential updates to the session metadata schema to ensure the original directory path is consistently stored/retrieved, and updating the CLI output logic to handle the aggregated data and the --json flag requirements. Update `listSessions` to scan the entire global session storage directory. Pass a flag to `sessionSelector.listSessions()` to skip filtering by current project hash, then display the `workspaceDir` property for each session found.
19 24663 ACP: let hosts answer ask_user and exit_plan_mode OPEN priority/p2, area/non-interactive, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/24663 Extend the Agent-to-Agent (ACP) server to allow host editors to programmatically respond to `ask_user` and `exit_plan_mode` prompts. large This task involves architectural and protocol changes to the Agent-to-Agent (ACP) server and the core Scheduler's routing logic. According to the criteria, modifications to the A2A protocol, task Scheduler, and implementing host-answerable input flows across the controller boundary are classified as Large effort due to their complexity and impact on the core execution pipeline.
20 24658 gemini extensions select command - interactive and one-shot ability to quickly manage extensions OPEN status/need-triage, area/extensions, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/24658 Implement a new `/extensions select` command that allows users to enable or disable multiple extensions at once, including an interactive multi-select picker. medium Implementing the `/extensions select` command requires creating a new interactive multi-select UI component using Ink, managing its internal state, and integrating it with the existing extension enablement services. This involves logic tracing across the CLI's command structure and state synchronization to batch-apply changes to the extension configuration, which aligns with the Medium effort criteria for React/Ink state management and service integration.
21 24553 feat(ui): implement persistent sticky topic header OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/24553 Relocate the `TopicStickyHeader` from the scrolling chat history to a persistent, fixed position at the top of the application layout. medium Relocating the TopicStickyHeader requires synchronizing state between the message history and the global application layout. This involves modifying multiple layout files (DefaultAppLayout, ScreenReaderAppLayout) and implementing or leveraging React state/context to track the 'current' topic as it changes during execution, which fits the criteria for state management and component integration.
22 24427 GeminiCLI.com Feedback: [ISSUE] OPEN area/extensions, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/24427 Flag paid extensions and services with additional Terms of Service (TOS) on the GeminiCLI.com extensions gallery. medium This task requires modifying the Zod schema for extension metadata in the core package, updating the extension registry data, and implementing UI changes in the website's gallery components to render the new flags. It involves state/data synchronization across the core types and the frontend, which aligns with the Medium effort criteria for schema validation and multi-component integration.
23 24407 Hide the generated output code from CLI OPEN status/need-triage, area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/24407 Add an option to suppress the verbose code streaming output during file-write operations, showing only a concise summary instead. small The task involves adding a new configuration field to the settings schema and implementing a conditional rendering check in the ToolResultDisplay component. This is a highly localized change (2 files) that falls under trivial logic/config and UI adjustments as per the criteria. Add `ui.verbosity` to `settingsSchema.ts`. In `ToolResultDisplay.tsx`, if the tool is `edit` or `write_file` and verbosity is `'summary'`, render only the status line and the line count instead of the `DiffRenderer`.
24 24395 ask_user interface can be difficult to notice OPEN priority/p2, area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/24395 Make the `ask_user` tool prompt more prominent in the TUI to prevent users from missing it. small This is a localized UI/aesthetic adjustment within a single Ink component (AskUserDialog.tsx). It involves simple styling changes such as adding bold text or adjusting colors to improve visibility, which aligns with the criteria for small effort tasks. In `AskUserDialog.tsx`, wrap the prompt text in a `<Text bold color={theme.status.warning}>` component and add a top margin to separate it from the history.
25 24280 ACP: populate PromptResponse.usage and send UsageUpdate with cost OPEN status/need-triage, area/non-interactive, status/possible-duplicate, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/24280 Enhance the ACP server to populate `PromptResponse.usage` and broadcast `UsageUpdate` events that include calculated session costs. medium This task involves logic tracing and integration across the ACP server implementation and the model response handling. It requires mapping existing token data to a new protocol-compliant structure and implementing a cost calculation utility based on model-specific rates. Since it involves modifying the asynchronous flow to broadcast session notifications (UsageUpdate) and ensuring protocol consistency across components, it fits the Medium effort criteria.
26 24199 Alpine startup/auth: remove duplicate refresh and reduce first-pass startup work OPEN status/need-triage, area/core, status/possible-duplicate, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/24199 Optimize the auth and startup flow for non-interactive environments (like Alpine Linux CI/CD) by reducing redundant work and credential refreshes. medium The task involves logic tracing and state synchronization between the initial CLI startup sequence and the React/Ink UI hooks. Optimizing the authentication lifecycle to prevent redundant refreshes and ensuring state is correctly passed through the asynchronous flow requires careful validation of the auth provider and startup logic, fitting the criteria for Medium effort.
27 24169 GeminiCLI.com Feedback: skill doesn’t appear in /skills list. OPEN status/need-triage, area/extensions, area/documentation, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/24169 Investigate and fix why certain skills do not appear in the `/skills` list despite being successfully loaded. medium The issue involves investigating and fixing logic within the CLI's skill discovery and UI rendering pipeline. Based on the previous analysis, this requires tracing state synchronization between the skill manager and the Ink-based UI components (SkillsList.tsx), ensuring that filtering logic correctly handles various skill types. This aligns with the Medium criteria for logic tracing and state management in React/Ink components. Update the filtering logic in `packages/cli/src/ui/commands/skillsCommand.ts` to include all skills from the `agentRegistry` without excluding based on metadata flags like `isHidden` unless explicitly requested.
28 24071 Let users queue a message while compression is running OPEN status/need-triage, area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/24071 Enable users to type and queue a new message while the conversation history is being compressed, rather than blocking the UI. medium This task requires modifying the React/Ink state management within the CLI's UI components to handle asynchronous state transitions between compression and message processing. It involves synchronizing the input buffer with the completion of the compression task, which fits the criteria for Medium effort due to state synchronization and async flow handling.
29 24033 Provide detailed logs with LLM calls with `--debug` OPEN status/need-triage, area/core, status/possible-duplicate, type/bug 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/24033 Add detailed raw request and response logging for all Gemini API calls when the `--debug` flag is active. small The task is highly localized to the `LoggingContentGenerator` class. It involves adding a few `debugLogger.debug` calls to capture and output the JSON payloads of API requests and responses, which are already being processed by this class. This aligns with the criteria for minor logging adjustments and localized fixes. In `loggingContentGenerator.ts`, wrap the `generateContent` and `sendMessage` calls with `debugLogger.debug` statements that log the stringified request and response objects.
30 24030 Provide method to 'interrupt' stuck agent when running in headless mode OPEN status/need-triage, area/non-interactive, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/24030 Provide a mechanism (like SIGINT handling) to interrupt a 'stuck' agent turn when running in headless/non-interactive mode. medium Implementing a signal handler that interrupts a 'stuck' agent turn to prompt for additional context requires more than a simple process exit. It involves modifying the asynchronous control flow to catch the signal, triggering the existing AbortController, and then transitioning the process state to read from stdin—potentially in an environment where stdin was not originally expected to be interactive. This requires logic tracing across the CLI and the agent session management to ensure the session remains valid after the interruption. Add a `process.on('SIGINT', ...)` handler in `nonInteractiveCli.ts` that calls `abortController.abort()` to cleanly terminate the pending model request and exit the process.
31 23874 Improve filesystem error handling for ECONNRESET OPEN status/need-triage, area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/23874 Provide a user-friendly error message for the `ECONNRESET` system error code in filesystem operations. small The change is a trivial addition of a single error message string to a static mapping object in a single file (fsErrorMessages.ts). It falls under the category of string/content updates and trivial logic adjustments, requiring minimal effort and testing. Add a new entry for `'ECONNRESET'` to the `errorMessageGenerators` map in `fsErrorMessages.ts` with a description like 'The connection was reset by the filesystem or remote host.'
32 23861 Improve filesystem error handling for ETIMEDOUT OPEN status/need-triage, area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/23861 Provide a user-friendly error message for the `ETIMEDOUT` system error code in filesystem operations. small The change is a highly localized string/content update involving the addition of a single entry to a mapping object in one file (fsErrorMessages.ts). It requires no complex logic or cross-component integration. Add an entry for `'ETIMEDOUT'` to the `errorMessageGenerators` map in `fsErrorMessages.ts` with a clear message like 'The filesystem operation timed out.'
33 23800 please show full command with Ctrl+O OPEN area/core, status/needs-info, type/bug 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/23800 Display the full executed shell command in the tool detail view triggered by `Ctrl+O`. small This is a localized UI adjustment within the Ink-based terminal interface. The shell command data is already captured in the ToolInvocation object; the task simply involves adding a Text component to the existing detail view triggered by the Ctrl+O keypress handler. It falls under the criteria for minor UI tweaks and displaying existing data. Update `packages/cli/src/ui/components/views/ToolOutputDetail.tsx` to display `invocation.command` at the top of the detail box, formatted as a code block.
34 23796 Support XDG Base Directory Specification for configuration OPEN status/need-triage, area/core, status/possible-duplicate, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/23796 Modify the CLI to follow the XDG Base Directory Specification for configuration and data storage (e.g., using `~/.config/gemini` if `XDG_CONFIG_HOME` is set). small The change is highly localized to a single file (packages/core/src/utils/paths.ts) and involves straightforward logic to check environment variables and return a path string. This fits the criteria for trivial logic/config adjustments and is easily reproducible and testable. In `paths.ts`, update the `getGeminiDir()` function to check `process.env.XDG_CONFIG_HOME` or `process.env.GEMINI_CONFIG_DIR` before defaulting to `path.join(os.homedir(), '.gemini')`.
35 23786 Provide link when Automatic Update fails OPEN priority/p3, area/core, 🔒 maintainer only, type/bug 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/23786 Provide a manual download/update URL in the TUI notification when the automatic background update fails. small This is a localized string and UI content update within the UpdateNotification component. It involves modifying a static error message to include a manual installation command, which falls under the criteria for minor UI/aesthetic adjustments and string updates. Update `packages/cli/src/ui/components/UpdateNotification.tsx` to accept an optional `downloadUrl` and render it using a blue `<Text>` element if the update state indicates a failure.
36 23745 Improve consistency of debugLogger behavior across CLI components OPEN status/need-triage, area/core, type/bug 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/23745 Refactor the logging system to ensure `debugLogger` behavior and output formatting are consistent across both `packages/core` and `packages/cli`. medium Standardizing debugLogger involves modifying the core logging utility and refactoring multiple components across the core and CLI packages to remove manual environment guards. This requires logic tracing across the codebase and validation to ensure the TUI correctly handles the standardized output without display inconsistencies, fitting the criteria for integration across multiple components.
37 23730 Completed tasks moving to the end is confusing OPEN status/need-triage, area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/23730 Fix the confusing behavior where completed sub-tasks are automatically moved to the end of the task list. small This is a localized UI adjustment in the Todo component. The fix involves either modifying the sorting logic or adding a visual separator between task states within a single file (packages/cli/src/ui/components/messages/Todo.tsx), which aligns with the criteria for minor structural layouts and trivial logic changes. In `Todo.tsx`, remove any `.sort()` logic that prioritizes incomplete tasks, ensuring the `subtasks` array is rendered in its original order.
38 23675 Gemini CLI is Clumsy OPEN status/need-triage, area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/23675 Address general UX 'clumsiness' (e.g., input lag, flickering, or non-standard key handling) reported in feedback. medium The issue describes fundamental UX friction in the TUI, specifically regarding input handling (Ctrl-X workflow) and output formatting (line numbers). Addressing this requires modifying React/Ink state management in InputPrompt.tsx to improve the input buffer experience and potentially adjusting the Markdown renderer or system prompt logic to handle code block formatting better. This involves logic tracing and state synchronization across multiple UI components, fitting the Medium criteria.
39 23663 feat: Export session to file for sharing OPEN status/need-triage, area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/23663 Add a feature to export the current conversation session to a standalone file (JSON or Markdown) for sharing or archival. medium Implementing session export and import requires integrating with the ChatRecordingService, handling asynchronous file I/O, and modifying the CLI state initialization to support loading from a file. Ensuring the session can be correctly resumed involves state synchronization and validation of the imported data, which fits the criteria for logic tracing and service integration across components. Add a `/session export <path>` subcommand in `packages/cli/src/ui/commands/sessionCommand.ts`. The action should retrieve the full transcript from `agentContext.chatRecordingService` and save it to the provided path.
40 23617 Consolidate diffstat generation logic OPEN area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/23617 Consolidate the duplicated logic for generating `diffstat` (line additions/deletions) into a single shared utility. medium Consolidating diffstat generation logic requires tracing how file changes are calculated across multiple tool implementations (e.g., edit_file, apply_diff). It involves more than simple string extraction; it requires ensuring that the logic correctly handles edge cases where users manually modify AI-suggested edits, necessitating logic synchronization across the core utility and the tool execution layer, along with robust validation to prevent regressions in chat history reporting. Extract the line-counting and diff-aggregation logic into a `calculateDiffStat` function in `fileDiffUtils.ts` and update `edit.ts` and `write-file.ts` to use it.
41 23561 GeminiCLI.com Feedback: Add colab MCP server to extensions OPEN status/need-triage, area/extensions, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/23561 Add a Google Colab MCP server entry to the official extensions gallery on GeminiCLI.com. small This is a content and metadata update for the extensions gallery. It involves adding a new entry to a static list or configuration file, which falls under the criteria for string/content updates and trivial configuration changes. Add the Colab MCP server configuration and description to the `extensions.json` registry file (or equivalent site metadata).
42 23501 [Feature Request] Simplify Configuration System & Add Global Settings (Like Claude Code) OPEN status/need-triage, area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/23501 Redesign and simplify the multi-tiered configuration system to provide a flatter schema and more intuitive global/local override behavior. large Redesigning the configuration system from a fragmented, nested structure to a unified global/local model requires significant architectural changes to the core Settings class, schema definitions, and UI components. It also necessitates a robust migration strategy for existing user data and complex logic for hierarchical setting resolution, fitting the criteria for a major subsystem overhaul.
43 23489 Support resuming sessions from any folder with globally addressable session IDs OPEN area/core, status/possible-duplicate, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/23489 Allow sessions to be resumed using their UUID from any directory, rather than being restricted to the directory where they were created. medium Implementing global session resumption requires modifying the session discovery logic to search across all project-specific storage directories rather than just the current one. It also necessitates adding an interactive prompt to handle directory mismatches and updating multiple entry points including --resume, /resume, and --list-sessions, which involves logic tracing and UI state management. In `resolveSession` (packages/cli/src/utils/sessions.ts), if the session is not found in the current project directory, use `fs.readdirSync` to iterate over all subdirectories in the sessions root and look for a matching UUID filename.
44 23456 Feature: Explain this Error Git Pre-Commit Hook Integration OPEN status/need-triage, area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/23456 Implement a Git pre-commit hook integration that automatically pipes hook failures to Gemini for an explanation and suggested fix. medium This feature requires implementing a new CLI command, handling filesystem operations to install the hook into the .git directory, and creating a wrapper script to manage process exit codes and pipe stderr to the Gemini API. It involves service integration and asynchronous flow management, fitting the 1-3 day development window.
45 23425 feat: add three-snapshot memory leak detection utility OPEN status/need-triage, area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/23425 Implement a 'three-snapshot' memory leak detection utility that captures and compares process heap states over time. medium Implementing the three-snapshot utility requires creating a new telemetry module with logic for stateful snapshot tracking, delta calculations, and severity classification. While it uses standard Node.js APIs, it necessitates robust validation and integration into the CLI's lifecycle to ensure accurate reporting without introducing its own overhead, fitting the 1-3 day medium effort profile.
46 23422 feat: add V8 heap snapshot capture utility for memory diagnostics OPEN status/need-triage, area/core, type/bug 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/23422 Add a diagnostic utility to capture and save V8 heap snapshots for memory usage analysis. small The task involves implementing a localized utility function that wraps the built-in Node.js 'v8' module. It requires basic filesystem operations and metadata formatting, which is straightforward and constrained to a single module, fitting the criteria for a small effort level. Add a subcommand to `debugCommand.ts` (or a new `/debug` handler) that imports `v8` from `node:v8` and executes `v8.writeHeapSnapshot(path.join(storage.getProjectTempDir(), 'heap.heapsnapshot'))`.
47 23402 test(ACP): Add missing unit coverage for restore command flows OPEN status/need-triage, area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/23402 Implement missing unit test coverage for the ACP (Agent-to-Agent) session restoration and 'restore' command flows. small The task involves adding unit test coverage for a single command file. The logic in restore.ts is straightforward, and a significant portion of the test suite is already implemented in the provided context. Completing the remaining test cases for error branches and the generator flow is a highly localized task that can be completed within a single day. Create or update `packages/core/src/code_assist/server.test.ts` to include test scenarios that trigger the `restore` command and verify that the agent state (history, context) is correctly re-hydrated.
48 23392 ## 🚀 Improvement: JetBrains IDE Detection – Robustness & UX Enhancements OPEN status/need-triage, area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/23392 Improve the robustness and accuracy of JetBrains IDE detection logic across Windows, macOS, and Linux to provide a better onboarding experience for extensions. medium The task involves implementing a timeout for process traversal to prevent CLI hangs, which falls under asynchronous control flow management. Additionally, it requires refining detection logic for multiple JetBrains products and updating UI messaging/guidance, necessitating logic tracing and integration across the detection utility and user-facing CLI components.
49 23373 Allowing remote use of Gemini CLI through telegram, etc. OPEN status/need-triage, area/non-interactive, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/23373 Implement a remote interface (e.g., Telegram Bot API) to allow interacting with the Gemini CLI agent from mobile devices or external chat applications. large Implementing a remote interface like Telegram requires a significant architectural shift from a terminal-based CLI to a persistent service model. It involves creating a new adapter layer to map external API events to the agent's internal logic, managing persistent state across sessions, and handling external network protocols (webhooks/long-polling), which constitutes a major subsystem implementation.
50 23371 Better TUI copy method OPEN priority/p2, area/core, type/bug 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/23371 Implement a more user-friendly TUI copy method, such as a dedicated 'Copy Mode' or a keyboard shortcut to copy blocks of code without terminal formatting (borders, line numbers). medium Implementing a user-friendly copy method in an Ink-based TUI requires managing UI state transitions to toggle formatting (like borders and line numbers) or integrating a clipboard utility to programmatically capture specific blocks. This involves logic tracing in the MainContent component, handling keyboard input via hooks, and managing asynchronous clipboard operations, which aligns with the Medium effort criteria for state management and service integration.
51 23350 Improve filesystem error message handling for ENOTDIR Fixes #23350 OPEN status/need-triage, area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/23350 Add specialized error message handling for the `ENOTDIR` (Not a directory) system error code in the filesystem utility. small The task is a highly localized string and logic update within a single file (fsErrorMessages.ts). It involves adding a single entry to a static mapping object to handle the ENOTDIR error code, which fits the criteria for trivial logic and content updates. Add an entry for `'ENOTDIR'` to the `errorMessageGenerators` map in `packages/core/src/utils/fsErrorMessages.ts` with a message like 'Path exists but is a file, expected a directory.'
52 23165 feat(cli): add /context command to show context window breakdown OPEN area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/23165 Implement a new `/context` slash command that displays a detailed breakdown of the current token usage, including system instructions, chat history, and attached files. medium Implementing a new slash command with a multi-part visual UI (segmented bar, table) using Ink requires state synchronization with the chat session's token metrics. While the underlying data exists in the Summarizer and GeminiChat services, formatting the breakdown, calculating estimates like turns remaining, and ensuring the UI fits the compact requirements involves non-trivial logic and component integration across the CLI and service layers.
53 22980 Clean up inconsistent naming conventions, configuration architecture, and documentation to improve developer experience OPEN area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/22980 Perform a comprehensive cleanup of naming conventions, configuration structures, and internal documentation across the entire monorepo to improve developer ergonomics. large This task involves a comprehensive refactoring of configuration schemas, public-facing CLI commands, and internal naming conventions across the entire monorepo. Because it impacts exported APIs and core configuration architecture, it requires synchronized changes across multiple packages, extensive updates to unit and integration tests to prevent regressions, and a complete overhaul of the documentation. The breadth of the changes and the risk of breaking core functionality across the project align with the criteria for a Large effort level.
54 22958 Refactor AgentConfigDialog OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/22958 Refactor the `AgentConfigDialog` component to improve maintainability and simplify its complex state management. medium Refactoring the AgentConfigDialog involves complex React/Ink state management, transitioning to a store pattern, and implementing dynamic schema validation. This aligns with the Medium criteria as it requires logic tracing for UI state synchronization (e.g., focus and input buffers) and adjustments to validation logic across multiple sub-components.
55 22884 UX: `/mcp list` in interactive mode does not show tools from subagent-specific MCP servers OPEN area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/22884 Fix the issue where `/mcp list` only shows tools from global MCP servers, ignoring those specifically attached to active subagents. medium The fix requires logic tracing and integration across multiple components, specifically the CLI command layer and the core McpClientManager/McpClient logic. It involves refactoring how tools are aggregated from multiple registries (global and subagent-specific), which falls under the Medium criteria for service integration and state synchronization across components.
56 22743 Discover extensions under the current workspace OPEN area/extensions, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/22743 Enable automatic discovery of extensions located within the current workspace (e.g., in a `.gemini/extensions` folder). medium Implementing workspace-relative extension discovery requires modifying the ExtensionLoader to include new filesystem search paths and path resolution logic. It also necessitates a trust-check mechanism for local code execution to ensure security, which involves logic tracing and integration across the configuration and extension loading subsystems, fitting the criteria for logic tracing and filesystem/path resolution.
57 22729 Implement getCustomExcludes and expose customExcludePatterns setting OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/22729 Implement a `customExcludePatterns` setting to allow users to define project-specific file patterns that should be ignored by all tools. small The task involves adding a new field to the configuration schema (likely a Zod schema) and implementing a simple getter method in the Config class. The core logic for consuming these patterns is already present in the FileExclusions class, which currently uses a placeholder. This is a localized configuration update that fits the 'Trivial Logic/Config' criteria. Add `context.customExcludePatterns` (string array) to `settingsSchema.ts`. Update the `getIgnoreFilter` function in `ignorePatterns.ts` to merge these user patterns with the default excludes.
58 22666 Stale closures, excessive effect and state, unideal use of useSettingsStore OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/22666 Deep refactor of the React-based TUI layer to fix stale closures, optimize `useEffect` usage, and reduce unnecessary re-renders in `AppContainer`. large The issue describes a deep, foundational refactor of the React-based TUI layer across the entire codebase. Addressing stale closures, optimizing state/effect patterns, and resolving race conditions in the terminal event loop involves complex state synchronization and architectural cleanup that exceeds the scope of localized fixes, fitting the criteria for a major subsystem overhaul.
59 22651 UI: Need expand/collapse feature for Pasted Text and Image chips to prevent context contamination OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/22651 Add an expand/collapse feature for large pasted text blocks and image chips in the chat history to improve TUI readability. medium Implementing an expand/collapse toggle in an Ink-based TUI requires managing component state for visibility and handling keyboard/focus events to trigger the toggle. This falls under React/Ink state management and UI synchronization, as it involves modifying the input buffer rendering and potentially the message content components to handle interactive previews without disrupting the terminal layout.
60 22644 [FEATURE]: Allow custom session ID when starting google-gemini -CLI(e.g., --session my-project) OPEN status/need-triage, area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/22644 Add a `--session <id>` command-line flag to allow users to start the CLI with a specific, named session ID instead of a random UUID. small Adding a CLI flag to override a session ID is a straightforward configuration change. Since the session ID is already a parameter in the Config class, this task only requires updating the CLI argument parser (e.g., commander) and passing the value to the session initialization logic, fitting the criteria for a localized logic/config update. Add the `session` option to the Yargs config in `packages/cli/src/config/config.ts`. In `gemini.tsx`, pass this value to the `Config` constructor instead of allowing it to generate a random UUID.
61 22627 Feature request: Mermaid diagram preview for generated mermaid code OPEN area/core, status/possible-duplicate, help wanted, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/22627 Implement a preview mechanism for Mermaid diagrams generated by the model. medium Implementing a Mermaid preview requires adding logic to detect specific code blocks within the model's output, managing temporary filesystem resources for the HTML generation, and integrating with a browser-opening utility. This involves asynchronous flow management and service integration that goes beyond simple UI tweaks but does not reach the architectural complexity of core protocol changes.
62 22563 feat: add /fork command for session branching OPEN area/core, help wanted, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/22563 Implement a `/fork` command that creates a new, independent session starting with the history of the current one. medium Implementing the /fork command requires integrating logic across the SlashCommandService and ChatRecordingService. It involves asynchronous file system operations to duplicate session records, generating new session IDs, and ensuring state consistency between the current memory-resident conversation and the new persisted file. This falls under the medium category as it involves service integration and asynchronous flow management.
63 22510 Feature: Batch confirmation for multi-file edits OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/22510 Add a batch confirmation feature that allows users to approve all pending tool calls (e.g., multiple file edits) with a single interaction. medium Implementing batch confirmation requires modifying state management in the CLI's Ink components to aggregate pending tool calls and updating the core ConfirmationBus to handle bulk approval signals. This involves logic tracing across packages and managing asynchronous UI states, which fits the criteria for medium effort.
64 22370 Support for Asynchronous "Push" Triggers / External Wake-up for Idle Agent Sessions OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/22370 Support asynchronous 'push' triggers that can wake up an idle agent session from an external source, such as an MCP server notification or a webhook. large This task requires a fundamental architectural shift from a pull-based interaction model to a push-based one. It involves implementing a persistent background listener (IPC or socket-based), modifying the core AgentScheduler to handle externally triggered turns, and managing complex state synchronization within the Ink-based InteractiveCli to ensure the UI updates correctly when an external event occurs while the user is idle. This aligns with the criteria for major architectural changes and subsystem modifications.
65 22288 Feature Request: Environment Variable expansion and injection inside settings.json OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/22288 Enable environment variable expansion (e.g., `${VAR_NAME}`) for all string values within the `settings.json` configuration file. small The core logic for environment variable expansion is already implemented in the provided envVarResolver.ts utility. The task only requires integrating this existing function into the settings loading pipeline within the config module and adding corresponding unit tests, which is a highly localized and straightforward change. In `loadSettings` (packages/cli/src/config/settings.ts), after parsing the JSON but before validation, pass the settings object through `resolveEnvVarsInObject()`.
66 22249 [MCP] "Method not found" error when using tools with Elicitation support OPEN status/need-triage, area/extensions, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/22249 Resolve the 'Method not found' error occurring during MCP tool calls that involve Gemini's elicitation (user-clarification) flow. large Implementing MCP Elicitation support requires adding server-to-client request handling, which is a significant protocol addition to the current MCP integration. This involves complex state management to pause tool execution, transition the Ink-based UI to an interactive input state, and route user feedback back through the transport layer. According to the criteria, modifications to MCP integrations and handling complex asynchronous flows across major subsystems qualify as Large effort.
67 22184 # [BUG Report] Logger Architecture Needs Refactor OPEN priority/p2, area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/22184 Perform a major refactor of the logging architecture to provide a more consistent, extensible, and performant observability layer. large Refactoring the logging architecture is a cross-cutting architectural change that involves defining a new standardized interface and implementing a provider-based pattern for different sinks (telemetry, file, TUI). As noted in the previous analysis, this requires updating hundreds of call sites across multiple packages and modifying core primitives in the core package, fitting the criteria for a major subsystem overhaul.
68 22130 [UI] Refactor Hardcoded Layout Constants in ThemeDialog OPEN area/core, help wanted, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/22130 Refactor the hardcoded layout constants and magic numbers in the `ThemeDialog` component to use shared theme values. small This task is a localized static refactoring of UI constants within a single file (ThemeDialog.tsx). It involves extracting magic numbers into constants or a shared theme configuration, which aligns with the criteria for small effort tasks such as UI/aesthetic adjustments and static refactoring. Extract values like `DIALOG_WIDTH` and `PADDING` to the top of the file or import them from `packages/cli/src/ui/semantic-colors.js`.
69 22083 feat(cli): expose model thinking events in --output-format stream-json OPEN priority/p2, area/non-interactive, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/22083 Expose the model's internal 'thinking' process events in the `--output-format stream-json` mode for better transparency in headless execution. small The task is highly localized, requiring updates to a type definition and a single event handling loop in the non-interactive CLI. It follows existing patterns for JSON streaming and does not involve complex state management or architectural changes, fitting the criteria for a small effort level. In `useGeminiStream.ts`, update the `stream-json` emitter to check for parts with the `thought: true` flag (or equivalent from the API) and include their content in the output chunk.
70 22019 feat(cli): add 'remove' and 'clear' subcommands to '/directory' command OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/22019 Extend the `/directory` command with new `remove <path>` and `clear` subcommands to allow better management of the active workspace context. small This task is a localized extension of an existing command. It involves adding two subcommands ('remove' and 'clear') to the '/directory' handler and implementing the corresponding logic in the DirectoryManager. Since the infrastructure for directory management and command parsing is already in place, this is a straightforward logic update constrained to 1-2 files. Add `directoryRemoveCommand` and `directoryClearCommand` to the subcommands array in `packages/cli/src/ui/commands/directoryCommand.ts`. The actions should call `config.removeIncludedDirectory()` or `config.clearIncludedDirectories()`.
71 21999 [UX/CORE] Background Process Management & Persistence OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/21999 Implement a background process management system that can track, manage, and persist long-running tasks (like background servers) across CLI sessions. medium Implementing persistent background process management requires creating a file-based registry to track PIDs across sessions, modifying the ShellExecutionService to synchronize with this registry, and adding new CLI command handlers. This involves state management, filesystem I/O, and process lifecycle validation, fitting the Medium criteria for logic tracing and integration across components.
72 21987 feat(cli): Add `doctor` command for config validation and diagnostics OPEN status/need-triage, area/core 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/21987 Implement a new `/doctor` command to perform system-wide health checks, including authentication status, network connectivity to Gemini API, and configuration validity. medium Implementing a `doctor` command involves integrating multiple subsystems including configuration validation, authentication status, and network connectivity. It requires creating a new command handler, developing a diagnostic reporting UI in Ink, and implementing logic for the `--fix` flag which involves programmatic file system modifications. This aligns with the Medium criteria for service integration, state management, and validation logic across several components.
73 21981 Not really a bug, but an annoyance. When it's doing an acive job checking a lot of files an processes it interupts typing out a new message with approval boxes.. pretty annoying. OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/21981 Refactor the TUI to prevent asynchronous tool approval prompts from interrupting the user's current typing flow in the `Composer`. medium This task involves managing React/Ink state and focus synchronization between the Composer and the Tool Approval components. It requires ensuring that the input buffer remains active and focused while asynchronously rendering approval prompts, which falls under the Medium effort category for state management and UI focus logic.
74 21974 feat(cli) : Add Thinking Level selection to the interactive `/model` UI OPEN area/core, 🔒 maintainer only 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/21974 Add a 'Thinking Level' (budget) selection to the interactive `/model` selection dialog. medium Adding a 'Thinking Level' selection to the interactive `/model` UI involves modifying React/Ink state management and navigation logic within the ModelDialog component. It requires synchronizing the UI state with the underlying model configuration and ensuring the selection is correctly applied to the generation parameters, which aligns with the Medium effort criteria for state management and component integration. In `ModelDialog.tsx`, add a new selection list for thinking budgets (e.g., 'Low', 'Medium', 'High'). Update the `onSelect` callback to persist the chosen budget to the model configuration.
75 21899 Better Settings UX. OPEN priority/p2, area/core, status/possible-duplicate, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/21899 Improve the Settings UI by adding categories, search functionality, and better descriptions for complex configuration options. medium The issue involves multiple interconnected UX improvements within the Settings UI, specifically requiring React/Ink state management to resolve input focus conflicts (j/k keys), conditional rendering logic for the restart prompt, and UI synchronization. These tasks require logic tracing and state handling across the SettingsDialog component rather than simple static changes, fitting the criteria for Medium effort.
76 21869 RFC: Hands-Free Multimodal Voice Mode Architecture for Gemini CLI OPEN priority/p2, area/core, status/possible-duplicate, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/21869 Implement the core architecture for Hands-Free Multimodal Voice Mode, including continuous audio streaming and voice activity detection (VAD). large This task involves implementing a major new subsystem for real-time multimodal voice interaction. It requires complex architectural changes, including managing continuous WebSocket audio streams, integrating with system-level audio APIs, and handling high-concurrency streaming data, which aligns with the criteria for Large effort.
77 21823 [Feature Request] Increase MCP tool limit from 100 to 500 OPEN area/core, area/agent, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/21823 Increase the hardcoded limit for the number of tools a single MCP server can expose to the agent. small Increasing a hardcoded limit or default configuration value is a trivial logic change that typically involves modifying a single constant in the MCP management logic. This fits the criteria for a small effort level as it is highly localized and easily verifiable. In `packages/core/src/tools/mcp-client-manager.ts`, locate the `MAX_TOOLS_PER_SERVER` constant and update its value from `100` to `500`.
78 21773 Yellow background is horrible OPEN area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/21773 Change the default background color used for code blocks and highlighted text to improve readability and visual appeal. small The issue involves localized UI aesthetic adjustments and minor logic fixes. Specifically, it requires changing default theme color constants and ensuring the 'useBackgroundColor' setting is correctly applied within the Ink components. The secondary issue regarding the bug report link is a string/content update. These tasks are constrained to the UI/theme layer and do not impact core application logic or complex state management. Update the `codeBackground` or equivalent color value in `packages/cli/src/ui/semantic-colors.js` to a more neutral or customizable color.
79 21675 [Feature Request/UI] Map Shift+Enter to newline for multi-line prompt entry OPEN priority/p2, area/core 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/21675 Enable `Shift+Enter` to insert a newline into the prompt buffer, allowing for easier multi-line prompt entry without immediate submission. medium Implementing Shift+Enter in a terminal environment is more complex than a standard web UI because many terminal emulators do not distinguish between Enter and Shift+Enter by default. This requires logic tracing within the Ink-based TextInput component to handle specific ANSI escape sequences and manage the input buffer state, fitting the criteria for React/Ink state management and input synchronization.
80 21649 [Feature] Add configuration schema for Hands-Free Multimodal Voice Mode OPEN area/core, 🔒 maintainer only 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/21649 Add the configuration schema and persistence logic for the proposed Hands-Free Multimodal Voice Mode. small The task involves adding a new configuration object to the existing settingsSchema.ts file. This is a localized change to a schema definition, which falls under the 'Trivial Logic/Config' category of the Small effort level. It does not require implementing the actual voice processing logic, only the metadata and default values for the settings. Add a new `voice` section to `packages/cli/src/config/settingsSchema.ts` with fields like `handsFreeEnabled`, `autoSilenceTimeout`, and `preferredInputDevice`.
81 21615 Hooks: Attach agent information OPEN area/core, 🔒 maintainer only 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/21615 Enhance the lifecycle hook system by attaching active agent metadata to the context passed to each hook execution. medium This task requires modifying the HookContext interface and updating the hook trigger points within the agent execution lifecycle. It involves tracing logic across the hook system and agent management components to ensure metadata is correctly propagated, fitting the criteria for logic tracing and integration across multiple components. In `packages/core/src/hooks/types.ts`, add an optional `agent` field to `HookContext`. Update `HookSystem.ts` to populate this field from the active `AgentContext` before executing any registered hooks.
82 21602 Request: Wrap long prompts in Tool Confirmation Screen instead of truncating OPEN area/core, help wanted, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/21602 Modify the tool confirmation screen to wrap long input prompts and command arguments instead of truncating them. small This is a localized UI adjustment within an Ink component. It involves modifying the layout properties of the ToolConfirmationMessage component to enable text wrapping instead of truncation, which aligns with the criteria for minor tweaks to structural layouts in Ink components. In `packages/cli/src/ui/components/messages/ToolConfirmationMessage.tsx`, locate the `<Text>` component rendering the tool arguments and add the `wrap="wrap"` prop, while ensuring the parent container has a fixed width or `flexGrow: 1`.
83 21505 docs(sdk): add JSDoc to exported interfaces in packages/sdk/src/types.ts OPEN area/core, area/agent, area/documentation, help wanted, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/21505 Add comprehensive JSDoc documentation to all public interfaces and types exported by the SDK package. small This is a documentation-only task that involves adding JSDoc comments to a single file (packages/sdk/src/types.ts). It falls under the 'String/Content Updates' category as it does not affect runtime logic or require complex testing. Iterate through `packages/sdk/src/types.ts` and add descriptive JSDoc comments to each `interface` and `type` declaration, explaining the purpose and valid values for each field.
84 21493 feat(ui): refine focus highlight for selection lists and settings items OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/21493 Improve the visual clarity of the focus highlight in interactive selection lists and the settings dialog. small The changes are localized to two UI components (BaseSelectionList and BaseSettingsDialog) and involve aesthetic refinements such as padding, color adjustments, and layout logic within the Ink framework. These modifications align with the criteria for minor UI/aesthetic adjustments and are easily verifiable through updated unit tests. Update the `focus` styles in `packages/cli/src/ui/hooks/useSelectionList.ts` and `SettingsDialog.tsx` to use a more prominent color from the `theme` object, such as `theme.status.info`.
85 21484 feat(cli): Interactive Progress Visualization & Task Stepping OPEN area/core, 🔒 maintainer only 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/21484 Implement a new interactive visualization system to track the progress of complex, multi-step agent tasks and allow users to 'step through' individual tool executions. large Implementing a hierarchical task tree and a step-through execution mode requires significant architectural changes to the core Scheduler and the introduction of complex state management within the Ink TUI. This involves modifying the task execution pipeline to support pausing/resuming and building a sophisticated UI component to visualize nested tool calls, which aligns with the criteria for Large effort (3+ days).
86 21424 perf(core): optimize shell execution and environment handling OPEN priority/p2, area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/21424 Optimize the performance of shell command execution and environment variable handling within the core agent loop. large Optimizing shell execution and environment handling involves deep platform-specific complexities, particularly regarding child process management and shell-specific behavior (PowerShell vs. POSIX). The task requires profiling and potentially refactoring the core execution path in ShellExecutionService, implementing efficient environment inheritance, and ensuring robustness across different OS environments, which aligns with the criteria for Large effort involving major subsystems and platform-specific child process management.
87 21410 Feature Request: Native SOCKS5 proxy support to resolve frequent "fetch failed" errors on large contexts OPEN priority/p2, area/core 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/21410 Add native support for SOCKS5 proxies to resolve network errors occurring in environments with restrictive connectivity. medium Implementing native SOCKS5 support requires more than a simple configuration change because the underlying 'undici' library used in fetch.ts does not natively support SOCKS protocols via its ProxyAgent. This task involves integrating a new dependency (e.g., socks-proxy-agent), refactoring the global dispatcher logic to switch between standard Agents, HTTP ProxyAgents, and SOCKS Agents based on the protocol, and ensuring that timeout and stream handling remain stable for large contexts as requested.
88 21400 Add an update command OPEN priority/p2, area/core, help wanted 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/21400 Implement an `/update` slash command that allows users to check for and install the latest version of the Gemini CLI directly from the terminal. medium Implementing an update command requires integrating with external registries (npm/GitHub) to check for versions, detecting the user's specific installation environment (npm, brew, uvx), and managing child processes to execute the update. This involves asynchronous flow control and cross-platform logic tracing, which fits the Medium effort criteria.
89 21373 feat: Display small tag instead of long version strings in CLI OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/21373 Shorten the version string displayed in the CLI header by using a compact 'tag' style (e.g., 'v0.40.0') instead of the full build/commit hash. small This is a localized UI/aesthetic adjustment involving simple string formatting or truncation in the header component. It falls under the 'UI/Aesthetic Adjustments' and 'String/Content Updates' criteria, requiring changes to likely only one file with no complex state management or architectural impact. In `packages/cli/src/ui/components/AppHeader.tsx`, add a helper to parse the version string and return only the major/minor/patch segments for display.
90 21368 Don't use Ctrl + B as shortcut OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/21368 Change the default keyboard shortcut for background task toggling to avoid conflicts with `Ctrl+B` commonly used in terminal multiplexers like tmux. small Changing a keyboard shortcut in an Ink-based CLI application is a highly localized fix. It involves identifying the specific input handler (likely using the useInput hook) and updating the conditional logic or configuration constant that triggers the background task view. This falls under the 'Trivial Logic/Config' category and should take less than a day to implement and verify. In `packages/cli/src/ui/contexts/KeypressContext.tsx`, update the mapping for toggling the background task view from `ctrl+b` to a different key combination, such as `ctrl+l` or `ctrl+alt+b`.
91 21285 Idea: Terminal Soundscapes (DX Sonification) for GSoC 2026 OPEN area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/21285 Implement an experimental 'Terminal Soundscapes' feature that provides optional audio feedback for various CLI states and transitions. large Implementing a cross-platform audio notification system involves significant platform-specific complexity, requiring the management of child processes (afplay, powershell, etc.) to ensure non-blocking execution within the Ink-based CLI. It qualifies as a major subsystem implementation that must synchronize with the core streaming state and handle diverse OS environments, aligning with the criteria for large effort.
92 21145 Support CamelCase and acronym matching in file search OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/21145 Enhance the fuzzy file search logic to support CamelCase matching (e.g., 'GH' matching 'GeminiHelper') and acronym-based filtering. medium Implementing CamelCase and acronym matching requires modifying the search logic in both the core file search utility and the autocomplete hook. It involves moving away from simple lowercase normalization to a case-sensitive or smart-case fuzzy matching algorithm (like AsyncFzf with proper configuration), which requires careful tuning of scoring and robust testing to ensure expected ranking behavior.
93 21144 [Epic] Improve overall file search and autocomplete experience OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/21144 A broad epic task to improve the overall performance, ranking, and user experience of file search and auto-completion across the CLI. large This is an epic encompassing multiple complex tasks including fuzzy matching algorithms, camelCase matching, and performance optimizations for large codebases. These improvements require architectural changes to filesystem indexing and search logic across both core and CLI packages, fitting the criteria for a large effort (3+ days).
94 20858 SDK: GeminiCliSession needs an approval callback mechanism (currently hardcodes PolicyDecision.ALLOW) OPEN status/need-triage, area/non-interactive, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/20858 Introduce an asynchronous approval callback mechanism in the SDK to allow programmatic control over tool execution, replacing the current hardcoded 'ALLOW' policy. medium This task requires modifying the SDK's session logic to support an asynchronous callback mechanism. It involves integrating the GeminiCliSession with the existing ConfirmationBus and PolicyEngine, ensuring that the execution flow correctly suspends and resumes based on external input. This falls under Service Integration and Asynchronous Flow in the Medium category.
95 20838 CTRL-z removes unfinished open questions in AskUser tool OPEN priority/p2, area/core, help wanted, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/20838 Fix a UI bug where pressing `Ctrl+Z` (Undo) incorrectly clears the active `AskUser` tool dialog or its internal state. medium The issue involves state management within the Ink/React TUI layer, specifically maintaining the input buffer state across process suspension (SIGTSTP/SIGCONT). This falls under the 'React/Ink State Management' and 'input buffers' category for Medium effort, as it requires tracing how the component lifecycle reacts to terminal signals and ensuring the TextInput state is not reset or incorrectly processed as an 'undo' command before the process backgrounds. In `packages/cli/src/ui/components/shared/TextInput.tsx`, ensure that the `ctrl+z` event calls `event.stopPropagation()` after updating the local buffer state to prevent it from reaching global command handlers.
96 20782 [Proposal] Stateful Remote WebSocket API for Interactive Control OPEN area/core, 🔒 maintainer only 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/20782 Design and implement a stateful remote WebSocket API to allow external applications to interact with and control an active agent session. large This proposal requires significant architectural changes, including the design and implementation of a new stateful WebSocket protocol and server component. It involves complex state serialization of the AgentScheduler, session persistence logic, and real-time command multiplexing, which aligns with the criteria for major subsystem development and core protocol changes.
97 20698 Feature Request: 1. Please add a "Side-by-Side" diff view option for the "Action Required" confirmation prompt when modifying files. 2. Please stop stripping ANSI color codes from the output of `run_shell_command`, so external diff tools like `delta --colo OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/20698 1. Implement a side-by-side diff view for file modifications. 2. Preserve ANSI color codes in the output of shell commands for compatibility with external tools like `delta`. medium Implementing a side-by-side diff view in Ink is a non-trivial UI task requiring layout management, line alignment logic, and terminal width handling. Additionally, modifying the shell tool to selectively preserve ANSI escape sequences involves adjusting output sanitization and serialization logic, which aligns with the Medium criteria for ANSI handling and UI state synchronization.
98 20672 feat(sdk): Python SDK for Gemini CLI Agent with programmatic access for the Python/ML ecosystem OPEN status/need-triage, area/non-interactive 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/20672 Develop a native Python SDK that provides programmatic access to the Gemini CLI agent, targeting the Python/ML ecosystem. large Developing a full Python SDK from scratch to mirror the TypeScript SDK is a major subsystem implementation. It requires porting core protocol handling (ACP), session management, and tool execution logic to a new language ecosystem, which involves significant architectural work and extensive testing to ensure parity, fitting the criteria for 3+ days of effort.
99 20480 Feature: evolve --resume to support resuming sessions from any folder via session ID OPEN area/core, help wanted 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/20480 Enhance the `--resume` command to support globally addressable session IDs, allowing users to resume a session from any folder regardless of where it was originally started. medium Implementing global session IDs requires modifying the session storage and retrieval logic to support cross-directory lookups. This involves updating the CLI argument parser to handle optional IDs, modifying the session manager to scan a global directory (e.g., ~/.gemini/sessions), and ensuring the UI displays the ID upon exit. It falls under Medium effort as it involves logic tracing, filesystem path resolution, and integration across the CLI, session management, and UI components. Update `resolveSession` in `packages/cli/src/utils/sessions.ts` to perform a recursive search in the global sessions root if the provided identifier does not match any session in the current project's subdirectory.
100 20476 Allow extensions to contribute status segments to the Footer OPEN area/extensions, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/20476 Implement a plugin system that allows CLI extensions to contribute custom status segments (text or icons) to the TUI footer bar. medium This task requires modifying the extension manifest schema, updating the ExtensionLoader to register new contribution types, and implementing state synchronization between the extension lifecycle and the Ink-based Footer component. It involves handling asynchronous data flows from external scripts or hooks and ensuring the UI updates reactively, which fits the criteria for Medium effort involving state management and service integration.
101 20227 feat(cli): Add ability to cycle through models and mark favorites OPEN priority/p3, area/core, status/needs-info, help wanted 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/20227 Add a feature to cycle through available models using a keyboard shortcut and allow users to mark specific models as favorites for quick access. medium Implementing model cycling and favorites requires changes across multiple layers: updating the configuration schema (Zod), modifying the ModelDialog Ink component for stateful toggling, and implementing global keyboard listeners for cycling. This involves state synchronization between the configuration and the active UI session, which fits the criteria for Medium effort involving React/Ink state management and integration across components. Add `ui.favoriteModels` to `settingsSchema.ts`. In `packages/cli/src/ui/contexts/KeypressContext.tsx`, map a new shortcut (e.g., `Ctrl+M`) to a function that calls `config.setNextFavoriteModel()`.
102 20118 Add oneMCP Support to Gemini-CLI via MCPSDK Integration OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/20118 Integrate the 'oneMCP' SDK into the core MCP management layer to enhance compatibility with a broader range of server types and protocol versions. large Integrating the MCPSDK to replace a custom authentication and protocol implementation is a significant architectural change to a core subsystem. According to the criteria, modifications to the Model Context Protocol (MCP) integrations and major subsystem refactoring fall under the 'Large' effort level, as it involves deep logic changes in mcp-client-manager.ts and potentially impacts tool discovery and execution flows.
103 19835 Support for live streaming in custom discovered tools OPEN area/core, help wanted, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/19835 Enable live output streaming for custom tools discovered via extensions or the workspace, allowing them to report progress and partial results back to the TUI. medium Implementing live streaming for custom tools requires modifying the tool execution pipeline to handle asynchronous process streams instead of simple buffered output. This involves updating the discovery schema, adjusting the Scheduler's handling of tool results, and managing real-time state updates in the Ink-based UI components, which aligns with the criteria for logic tracing and state synchronization across multiple components.
104 19757 gemininpm install -g @google/gemini-cli OPEN status/need-triage, area/core 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/19757 Correct a typo or formatting error in the CLI help text or documentation regarding the installation command. small The issue involves correcting a typo in the installation command within the documentation or CLI help text. This is a static content update that is highly localized and does not affect application logic, fitting the criteria for a Small effort level. Locate the string 'gemininpm' in the project (likely in `README.md` or a command description) and correct it to 'npm'.
105 19672 Truncate filepaths based on terminal width OPEN area/core, 🔒 maintainer only 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/19672 Implement smart path truncation in the TUI to ensure that long file paths are abbreviated (e.g., using '...') based on the current terminal width. small This is a localized UI enhancement involving a string manipulation utility and updates to a few Ink components to react to terminal width. It falls under UI/Aesthetic adjustments and trivial logic for formatting data types, fitting the criteria for a task completed in less than a day. Add a `truncatePath(path: string, maxLength: number)` helper to `packages/cli/src/ui/utils/textUtils.ts` that preserves the filename and leading directories while contracting the middle. Use this in `AppHeader` for the workspace path.
106 19661 Refactor loadCliConfig to support a minimal initialization path for auth bootstrap OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/19661 Refactor the configuration loading process to support a 'minimal' initialization mode, specifically for bootstrapping authentication without requiring a full workspace check. medium Refactoring a 440-line core initialization function with 80+ parameters into a tiered or decoupled structure requires significant logic tracing and state management. It involves identifying and isolating dependencies like FileDiscoveryService and ExtensionManager to create a 'minimal' path for auth, which necessitates careful validation to ensure no regressions in the primary CLI execution flow.
107 19619 Request for Korean translation of CLI interface (commands and descriptions) OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/19619 Add internationalization (i18n) support and provide a Korean translation for the CLI's commands, descriptions, and user interface elements. large Implementing internationalization (i18n) is a cross-cutting architectural change that requires introducing a new subsystem. It involves refactoring all hardcoded strings across the entire codebase, implementing a translation management framework, and adding configuration logic for locale switching, which fits the criteria for a major subsystem implementation.
108 19602 Feature: Manually provide new session UUID via command line arg OPEN area/core, help wanted 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/19602 Provide an option to manually specify a session UUID via a command-line argument when starting the CLI. small Adding a command-line flag to expose an existing configuration property is a straightforward task. It involves updating the Yargs definition and ensuring the value is passed to the Config instance, which is a localized change with minimal logic complexity. Add the `--session <uuid>` option to the Yargs configuration in `packages/cli/src/config/config.ts` and use it to initialize the `Config` instance in `gemini.tsx`.
109 19583 feat(policy): support granular skill activation permissions OPEN priority/p2, area/core, help wanted, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/19583 Extend the policy engine to support granular permissions for activating and using specific agent skills. medium The task requires integrating changes across several layers of the application: updating policy schemas and types, modifying the rule generation logic to support regex-based argument matching for specific skills, and updating the tool invocation flow to capture and persist these granular permissions. This involves logic tracing and state synchronization between the UI/CLI decision and the policy engine's persistence layer, fitting the criteria for a medium effort task.
110 19249 feat: emit token usage metadata via ACP extNotification in zed-integration OPEN area/core, help wanted, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/19249 Broadcast token usage metadata via ACP extension notifications for use in the Zed editor integration. small The change is highly localized to the ACP server implementation within the zed-integration package. It involves capturing existing metadata from the Gemini API stream and emitting a standard notification, requiring minimal logic (~30 lines) and no architectural changes. In `packages/core/src/code_assist/server.ts`, locate the end of the `sendMessage` handler and call `sendNotification('gemini/usageUpdate', stats)` to push the metadata to the connected host.
111 19067 use `/stats` to see the current Status , but how can use `gemini -p` to see current Status. OPEN area/non-interactive, 🔒 maintainer only 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/19067 Add the ability to view cumulative session statistics using the non-interactive `--prompt` mode. small The TelemetryService already tracks the required usage statistics. Implementing this feature involves a localized change to the non-interactive execution path (likely in the CLI entry point) to retrieve and display these existing metrics after a prompt is processed, fitting the criteria for trivial logic and formatting. Add a `--stats` boolean flag to `packages/cli/src/config/config.ts`. In `nonInteractiveCli.ts`, if this flag is set, fetch the stats from the telemetry service and log them to stdout before exiting.
112 19018 Update the file size limit for inline files to 100MB OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/19018 Increase the maximum allowable file size for inline `@` mentions and direct file reads to 100MB. small The task involves updating a single constant value (MAX_FILE_SIZE_MB) or a hardcoded numeric limit within the file utility layer. This is a trivial configuration change that is highly localized to one or two files and requires no complex logic or architectural adjustments. In `packages/core/src/utils/fileUtils.ts`, locate the `MAX_FILE_SIZE_BYTES` constant and update its value to `100 * 1024 * 1024`.
113 18990 Feature Request: The CLI input prompt does not support Tab-completion for file paths, which makes working with files inconvenient. Please consider adding this standard shell feature to improve usability. OPEN area/core, help wanted, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/18990 Implement standard shell-style Tab-completion for file paths directly in the input prompt, without requiring the `@` prefix. medium Implementing shell-style tab completion requires refactoring the existing completion logic in useAtCompletion.ts to decouple it from the '@' trigger. This involves managing React/Ink state for the input buffer, integrating with the FileDiscoveryService for real-time path resolution, and handling asynchronous search results within the TUI, which fits the criteria for logic tracing and state synchronization across components.
114 18871 [Feat] Add a command to delete current session upon exit OPEN priority/p3, area/core, area/security, help wanted 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/18871 Add a new command or flag to allow users to delete the current session's data (history and metadata) upon exiting the CLI. small The session deletion logic is already implemented in the codebase. This task only requires adding a new slash command or a flag to the existing exit command and calling the existing deletion utility before process termination. This is a localized change involving trivial logic and fits the criteria for a small effort level. Add an `exit --delete` subcommand in `packages/cli/src/ui/commands/exitCommand.ts`. The action should trigger `sessionSelector.deleteSession()` for the current active UUID before terminating the process.
115 18761 [Feature Request] Interactive 'Stop Waiting' mechanism to capture partial output from blocking commands OPEN priority/p3, area/core, 🔒 maintainer only 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/18761 Implement an interactive 'Stop Waiting' mechanism that allows users to interrupt a long-running shell command and capture its partial output as the tool result. medium Implementing a 'Stop Waiting' mechanism requires state synchronization between the TUI (Ink components) and the ShellToolInvocation via the MessageBus. It involves modifying the asynchronous execution flow to handle a manual interrupt signal, ensuring the child process is terminated gracefully while the ShellExecutionService flushes and returns the partial output buffer instead of a standard error or empty result.
116 18692 `doctor` command for installation and configuration troubleshooting OPEN priority/p3, area/core, 🔒 maintainer only 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/18692 Implement a `doctor` command to provide a diagnostic overview of the installation, authentication state, and configuration to aid in troubleshooting. medium Implementing a diagnostic suite requires integrating with multiple subsystems including MCP servers, extensions, and configuration management. It involves logic tracing across these components to validate loading states and filesystem permissions, as well as handling asynchronous checks for updates and network connectivity, fitting the criteria for service integration and async flow management.
117 18654 Enhanced Copy Workflow via External Editor Integration OPEN priority/p2, area/core, help wanted 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/18654 Enhance the copy workflow by allowing users to pipe the current chat history or specific code blocks into their external system editor (e.g., vim, nano). medium Implementing the /copy_editor command requires serializing the chat history into a formatted markdown string, managing temporary file lifecycle, and integrating with the existing editor utility. This involves state synchronization (retrieving the full session history) and handling asynchronous process execution for both terminal and GUI-based editors, which aligns with the Medium effort criteria for service integration and async flow management.
118 18612 [VSCode Plugin] Unable to change root directory OPEN priority/p2, area/core, help wanted 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/18612 Fix a bug in the VSCode extension where users are unable to change the root workspace directory after the initial setup. medium The issue requires implementing or fixing event listeners for VSCode workspace changes (onDidChangeWorkspaceFolders) and ensuring the updated root path is synchronized with the CLI agent. This involves state management and cross-component communication between the VSCode extension and the backend service, fitting the criteria for logic tracing and state synchronization.
119 18487 A2A Server should support multiple workspace directories OPEN area/core, help wanted 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/18487 Extend the Agent-to-Agent (A2A) server to support multi-root workspaces, allowing it to manage files and context across multiple independent directories. large Modifying the A2A server to support multi-root workspaces is an architectural change that falls under the 'Large' criteria. It requires refactoring the core configuration loader, path resolution logic, and file discovery utilities to handle multiple independent directories, which impacts how the server manages context and executes tools across different workspace roots.
120 18388 Delete option for MCP OPEN priority/p2, area/core, help wanted, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/18388 Add a delete option to the `/mcp` command to allow removing configured MCP servers from the session. medium Implementing a delete option for MCPs involves logic tracing and state synchronization across the mcpClientManager, the configuration persistence layer, and the Ink-based UI. It requires handling asynchronous filesystem updates and ensuring the React UI state correctly reflects the removal of the server, which aligns with the criteria for state management and service integration. In `packages/cli/src/ui/commands/mcpCommand.ts`, add a `delete <name>` subcommand that calls `agentContext.mcpClientManager.removeServer(name)` and updates the persistent config.
121 18385 Support Git Submodules in Extensions OPEN area/extensions, status/possible-duplicate, help wanted 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/18385 Support extensions that are registered as Git submodules within the user's configuration or workspace. medium Supporting Git submodules requires modifying the extension installation service to handle recursive cloning or post-clone submodule initialization. This involves updating asynchronous control flows, potentially adjusting how shell commands are executed, and validating filesystem states, which fits the criteria for Medium effort involving service integration and async flow management.
122 18345 RFC: Standardize "Reload/Refresh" Command Naming Conventions OPEN priority/p2, area/core, help wanted, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/18345 Standardize the naming of 'Reload' and 'Refresh' commands across all subsystems (Agents, Extensions, Skills) to improve consistency. small This task involves updating command metadata (names and aliases) across a few files to ensure naming consistency. It is a localized string-level change that does not impact core logic, state management, or complex asynchronous flows, fitting the criteria for a small effort level. Update the `name` and `aliases` properties in `agentsCommand.ts`, `extensionsCommand.ts`, and `skillsCommand.ts` to use a unified 'reload' verb.
123 18266 Align hook behavior for permission requests/decision control with Claude OPEN status/need-triage, area/non-interactive 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/18266 Align the behavior of agent hooks with standard industry patterns, allowing hooks to influence and override tool permission decisions. medium This task requires re-sequencing the tool execution pipeline within the Scheduler to trigger hooks before the UI permission prompt. It involves logic tracing across the hook system and the task execution flow, ensuring that hook decisions (allow/deny) correctly bypass or trigger the interactive UI state, which falls under medium-level integration and async control flow.
124 18086 npx might block in YOLO mode OPEN status/need-triage, area/non-interactive, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/18086 Automatically suppress interactive prompts from `npx` by appending the `--yes` flag when the CLI is running in YOLO mode. small The fix is highly localized to the shell tool implementation. It involves detecting if a command starts with 'npx' and conditionally appending the '--yes' flag based on the existing YOLO mode state. This falls under trivial logic/config adjustments and is expected to be constrained to a single file. In `packages/core/src/tools/shell.ts`, modify the command string before execution if `config.isYoloMode()` is true and the command begins with `npx`.
125 18034 Make it easier to discover commonly needed slash and key commands to users OPEN area/core, Stale 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/18034 Improve the discoverability of common slash commands and keyboard shortcuts through UI hints or an enhanced help overlay. small This task involves UI/aesthetic adjustments and content updates within the Ink-based CLI. It primarily requires adding static text hints or updating the existing HelpDialog component to display keyboard shortcuts and slash commands, which is a localized change with minimal logic complexity. In `packages/cli/src/ui/components/AppHeader.tsx`, add a small `<Text>` hint like '(? for help)' and ensure the `/help` command provides a concise table of essential shortcuts.
126 17851 Up arrow shouldn't go directly up in history when the prompt has multiple lines OPEN priority/p2, area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/17851 Update the input prompt logic so that the Up arrow moves the cursor vertically within a multi-line buffer before fetching items from the chat history. medium This task involves modifying the state management and key handling logic within the TextInput component to track cursor position relative to line breaks. Since it involves UI state synchronization and input buffer manipulation in an Ink-based component, it aligns with the Medium effort criteria.
127 17637 Skip redundant GEMINI.md loading in partialConfig during startup OPEN area/core, 🔒 maintainer only 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/17637 Optimize startup performance by skipping the redundant loading of `GEMINI.md` instruction files during the initial configuration bootstrap pass. small The task involves adding a boolean flag to the `loadCliConfig` function and updating a few call sites to skip I/O-heavy file loading when only authentication is required. This is a localized logic change with a clear implementation path, fitting the criteria for a small effort level. Add a `skipInstructions` boolean to the `LoadConfigOptions` in `packages/core/src/config/config.ts` and use it to conditionally call `instructionHydrator.load()`.
128 17421 Generalize subagents trust UX for extensibility OPEN area/extensions, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/17421 Generalize the trust and acknowledgment system for subagents to allow third-party agent extensions to participate in the same security UX. medium Generalizing the trust UX involves refactoring the AcknowledgedAgentsService into a more generic extensibility trust service, updating the underlying JSON storage schema, and modifying the React/Ink UI components (AgentConfigDialog) to handle multiple categories (Hooks, Skills, Subagents). This requires logic tracing across service integration points and state management in the CLI UI, fitting the criteria for Medium effort.
129 17389 Windows CLI: Scroll wheel affects input area instead of output history OPEN priority/p2, area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/17389 Fix a Windows-specific bug where mouse scroll wheel events are incorrectly captured by the input area instead of scrolling the history. medium This is a platform-specific UI state and event handling issue on Windows. It requires tracing how mouse wheel escape sequences are processed within the Ink-based terminal UI and ensuring they are correctly routed to the scrollable history component rather than the input buffer. This falls under the Medium criteria for logic tracing and UI state synchronization across components.
130 17381 vi mode not documented OPEN priority/p3, area/extensions, area/documentation, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/17381 Add comprehensive documentation for the CLI's 'vi mode', including supported keybindings and configuration options. small This is a documentation-only task involving content updates to the keyboard shortcuts page. It does not require any code changes or logic modifications, fitting the criteria for a small effort level. Create a new `docs/vi-mode.md` file and link to it from the main `README.md`. Document shortcuts like `i`, `Esc`, `k`, `j` and the `/vi` command.
131 17361 feat(cli): Add configurable escape key sequences for vim mode OPEN priority/p2, area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/17361 Support configurable escape key sequences (e.g., 'jj' or 'jk') to exit 'vi mode' Insert state, similar to standard Vim configurations. medium Implementing configurable escape sequences requires modifying the useVim hook to include a keypress buffer and a timeout mechanism. This involves complex state management to determine whether to intercept characters or flush them to the text buffer, which requires careful synchronization of React state and asynchronous timing logic.
132 17034 Improvement: Policy Engine - Support filtering by Runtime Environment (Sandboxed vs. Local) OPEN priority/p1, area/core, area/enterprise, 🔒 maintainer only, kind/enhancement, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/17034 Extend the policy engine to allow filtering rules based on the runtime environment (e.g., 'local' vs. 'sandboxed'). medium This task requires modifications across multiple files including type definitions, Zod schema validation in the TOML loader, and the core matching logic in the policy engine. It involves logic tracing to ensure the runtime environment state is correctly propagated and validated against the new policy rules, fitting the criteria for medium effort involving parsers and logic synchronization.
133 16718 update tips array with recent features and commands [Phrase Cycler] OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/16718 Update the rotating 'tips' array with recent features like fuzzy search, thinking budget, and new keyboard shortcuts. small Updating a static array of strings for UI tips is a localized content update that requires no logic changes or complex state management, fitting the criteria for a small effort task. Locate `packages/cli/src/ui/constants/tips.ts` and add the new feature descriptions to the `TIPS` array.
134 16716 [Refactor] Decouple Tool-Specific Cancellation Logic from SchedulerStateManager OPEN area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/16716 Refactor the `SchedulerStateManager` to decouple tool-specific cancellation logic, allowing tools to define their own 'cancelled' display state. medium This refactor requires changes across multiple layers of the codebase, including core type definitions in the confirmation-bus, the state transition logic in SchedulerStateManager, and specific tool implementations. It involves decoupling tool-specific logic into a generic interface, which requires careful validation to ensure that UI-side features (like diff preservation for the 'edit' tool) are not broken during the transition.
135 16606 Supporting Input Buffer Manipulation in CLI OPEN area/core, 🔒 maintainer only 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/16606 Implement support for input buffer manipulation, allowing the agent to suggest a response and place it directly into the user's terminal input area for review or editing. medium Implementing input buffer manipulation requires modifying the React state machine within the AppContainer to support a new 'Drafting' state. It involves synchronizing tool execution results with the TextInput component's internal buffer, which aligns with the Medium criteria for React/Ink state management and UI state synchronization.
136 16509 OpenCode style terminal OPEN area/core, 🔒 maintainer only 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/16509 Re-architect the CLI layout to support a sidebar-based task view and a persistent side-by-side diff view, similar to the OpenCode UI. large Implementing a multi-pane UI with a persistent sidebar and side-by-side diff view requires a fundamental re-architecture of the existing Ink-based layout system. This involves complex state management for focus across multiple panes, handling terminal resizing for split-screen views, and creating new high-level layout components, which falls under the category of a major subsystem redesign.
137 16419 Automation: move prompts from workflows into custom commands OPEN priority/p2, area/non-interactive, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/16419 Automate the creation of custom slash commands by allowing them to be defined as prompt templates in TOML files. medium Implementing a custom command loader requires developing a new TOML parser and validation logic (likely using Zod) to map external files to the internal SlashCommand interface. This involves logic tracing across the core and CLI packages, handling filesystem resolution, and ensuring the dynamic commands integrate correctly with the existing command router and prompt construction logic.
138 16357 [Feature Request] Advanced GNU Readline- / Zsh- / Emacs-style Keybindings and Multiline Navigation OPEN priority/p2, area/core, 🔒 maintainer only, status/bot-triaged, kind/enhancement 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/16357 Implement advanced Emacs/Readline-style keybindings (e.g., Ctrl+K, Ctrl+Y, Alt+F, Alt+B) for the TUI input prompt. medium Implementing advanced Readline/Emacs keybindings requires significant logic enhancements to the TextInput component's state management. It involves calculating cursor offsets for word-based navigation, handling multiline buffer logic for 'smart' line jumps, and managing a kill-ring state. This falls under the Medium criteria for React/Ink state management and UI synchronization.
139 16341 Copy text button OPEN area/extensions, help wanted 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/16341 Add a 'Copy text' button or hotkey to code blocks and agent responses in the chat history. medium Implementing a copy-to-clipboard feature in a terminal UI (Ink) requires more than a simple UI tweak. It involves managing focus states to determine which message or code block is active, integrating a cross-platform clipboard library, and handling the stripping of ANSI escape sequences from the text before copying. This aligns with the Medium criteria for state management and service integration. In `GeminiMessageContent.tsx`, add a focus-aware key handler (e.g., for the 'c' key) that calls `clipboardy.writeSync()` with the content of the currently focused code block.
140 16272 Improving logging on agents refresh OPEN area/core, aiq/agent, 🔒 maintainer only 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/16272 Improve the logging and success messaging for the `/agents reload` command to provide more context on what was updated. small This task involves modifying the success message of a specific CLI command. It is a localized change within the command handler to include dynamic data (like the count of agents) or additional instructional text, fitting the criteria for string/content updates and trivial logic adjustments. Update `agentsReloadCommand.action` in `agentsCommand.ts` to return a message containing the number of agents successfully re-hydrated from the registry.
141 15618 Vim mode should align with Bash vim mode, NOT Vim editor OPEN area/core, help wanted, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/15618 Align the CLI's 'vi mode' implementation with standard Bash/Readline vi-mode behavior, including starting in Insert mode and supporting history navigation. medium Aligning the Vim mode with Bash/Readline behavior requires refactoring the state machine in vim.ts to handle history navigation (k/j) and standard shell-like key mappings. This involves state synchronization between the Vim hook and the CLI's history state, as well as logic tracing for multi-key operators like 'dd'. It fits the Medium criteria for React/Ink state management and UI state synchronization.
142 15493 "Feature Request: Allow configuring the default shell execution environment (e.g., pwsh, bash, nu) instead of hardcoded powershell.exe on Windows." OPEN status/need-triage, area/core 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/15493 Allow users to configure the default shell executable (e.g., pwsh, bash, nu) used by the `run_shell_command` tool, particularly on Windows where it defaults to legacy PowerShell. medium Implementing this requires modifying the configuration schema (Zod) and propagating the new setting to the ShellExecutionService. Beyond just replacing the executable path, the implementation must handle shell-specific invocation arguments (e.g., 'bash -c' vs 'powershell -Command') and ensure that existing command-wrapping logic (like PID capturing) remains compatible with the user-selected shell. This involves logic tracing and integration across the configuration and service layers. Add `tools.shell.executablePath` to `settingsSchema.ts`. Update the `ShellTool` in `shell.ts` to use `config.getSetting('tools.shell.executablePath')` when spawning the child process.
143 14643 Please add ability to have an Audio Notification whenever the chat replies OPEN priority/p2, area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/14643 Implement an optional audio notification (system bell or sound file) that triggers whenever the agent completes a response turn. small This is a localized enhancement to the TUI. The turn lifecycle is already managed within the AppContainer, and triggering a terminal bell or a simple audio utility call upon state transition from 'streaming' to 'idle' is a trivial logic addition that fits the criteria for a small effort task. In `packages/cli/src/ui/AppContainer.tsx`, add a `useEffect` that monitors the `turnStatus`. When the state transitions from 'active' to 'idle' and a new response is present, execute `process.stdout.write('\x07')`.
144 13860 how to attach image in vscode gemini code assist? OPEN status/need-triage, priority/p1, area/extensions 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/13860 Enable image attachment support within the VSCode integrated terminal for the Gemini Code Assist extension. large Implementing image attachment support requires significant architectural and protocol changes to the Model Context Protocol (MCP) and Agent-to-Agent (A2A) server to handle binary data or file references. It involves building a custom bridge between the VSCode Extension API and the CLI backend, as well as updating the Gemini API integration to support multimodal inputs, which constitutes a major subsystem enhancement.
145 13400 Request for a /context command. OPEN priority/p2, area/core, 🔒 maintainer only, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/13400 Implement a `/context` slash command that displays a detailed breakdown of the current token usage and context window consumption. medium Implementing a /context command requires integrating with the existing token counting logic, aggregating data from the current conversation state (history, attachments, system instructions), and building a new Ink-based UI component to display the breakdown. This involves state management and service integration across the CLI's command handling and display layers, fitting the criteria for logic tracing and UI state synchronization.
146 8474 Feature Request: Add a command to view daily cumulative usage statistics OPEN priority/p2, area/core, 🔒 maintainer only, kind/enhancement 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/8474 Add a command to view daily cumulative API usage statistics, including total tokens used across all sessions in the last 24 hours. medium Implementing daily usage statistics requires introducing a persistent storage mechanism (e.g., a local JSON-based telemetry log) to track data across multiple CLI sessions. This involves modifying the core API response handling to log usage data and creating a new command to aggregate and display these stats, which falls under the 'Service Integration' and 'Asynchronous Flow' criteria for Medium effort.
147 2493 Isolate Gemini CLI from Project-Specific .env Files OPEN priority/p2, area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/2493 Provide a mechanism to isolate the Gemini CLI from project-specific `.env` files, preventing credential conflicts with the user's local projects. small The task involves adding a configuration flag and a CLI argument to bypass local environment loading. This is a localized logic change within the settings management and CLI entry point, fitting the criteria for trivial logic/config updates and straightforward CLI flag additions. Add an `ignoreLocalEnv` setting to `settingsSchema.ts`. In `loadEnvironment` (settings.ts), check this setting and skip the `findEnvFile(process.cwd())` step if it is true.
148 2465 Language Server Protocol support for the Gemini CLI OPEN priority/p2, area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/2465 Implement support for the Language Server Protocol (LSP) to provide the agent with deep code intelligence, including diagnostics and auto-completion. large Implementing LSP support is a major architectural expansion that requires building a client-side implementation of the Language Server Protocol, managing the lifecycle of external server processes via child process management, and integrating these capabilities into the agent's toolset. This involves complex asynchronous flows, protocol-level changes, and significant new subsystem development, fitting the criteria for a Large effort level.
149 2094 Show costs OPEN priority/p2, area/core, status/bot-triaged, kind/enhancement 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/2094 Convert and display the estimated monetary cost of API usage alongside token counts in the CLI statistics. small This is a localized UI and logic update. It involves creating a static pricing lookup table for Gemini models and updating the existing statistics display component to calculate and format the cost. This falls under trivial logic and UI adjustments within the defined criteria. Add a model-to-price mapping in `packages/core/src/config/models.ts`. Update `packages/cli/src/ui/components/StatsDisplay.tsx` to calculate and render the cost string (e.g., '$0.02') based on the current usage counts.
150 2065 Add Codebase Indexing for Enhanced Context and Efficiency OPEN priority/p2, area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/2065 Implement codebase indexing capabilities to provide the agent with a global understanding of the project's structure, symbols, and dependencies. large Implementing codebase indexing is a major subsystem addition that involves recursive filesystem scanning, multi-language parsing (AST or symbol extraction), persistent storage (SQLite or vector store), and the creation of new retrieval tools for the agent. This falls under the 'Major Subsystems' and 'Architectural Changes' criteria, requiring significant effort for performance optimization and integration.
151 1871 Should reply in the same language as the question OPEN priority/p2, area/core, type/feature 2026-04-21 https://github.com/google-gemini/gemini-cli/issues/1871 Update the agent to automatically detect the user's language and respond in the same language. small This task primarily involves updating the system instructions or base prompt templates to include a directive for language consistency. It is a localized string-based adjustment to the agent's configuration and does not require complex logic, external libraries, or architectural changes. In `packages/core/src/core/geminiChat.ts`, add a lightweight language detection call on the user's first prompt and append a 'Respond in [Language]' instruction to the system prompt.
File diff suppressed because one or more lines are too long