Problem (one or two sentences)
When entering a custom model name that is not in the predefined list for Google Gemini or GCP Vertex AI, the extension silently overrides the user's input and sends the API request using the default model (gemini-3.1-pro). This is structurally highly identical to the issue reported in #12074 .
Context (who is affected and when)
- I attempted to use the latest model (gemini-3.1-flash-lite-preview), which is currently missing from the predefined dropdown list. I manually typed it into the model field. However, the actual outgoing requests were silently replaced with gemini-3.1-pro.
- I only discovered this bug because I hit the quota limit for gemini-3.1-pro and received an error. If the request hadn't failed due to the quota, I would have been unknowingly using a much more expensive model, resulting in significant unintended API costs.
- Additionally, the predefined model lists for both Google Gemini and GCP Vertex AI are severely outdated (containing deprecated models while missing the latest ones). This forces users to rely on the custom model input, which is currently broken.
Reproduction steps
- Roo Code settings and select the "Google Gemini" (or "GCP Vertex AI") API provider.
- Provide a valid API Key.
- In the Model field, manually enter a custom model name that is not in the predefined list (e.g., gemini-3.1-flash-lite-preview).
- Send any prompt in the chat.
- Check the error logs (or API billing dashboard) and observe that the request was actually made using the default model (gemini-3.1-pro).
Expected result
The extension should strictly respect the custom model name entered by the user and send the API request using exactly that model (e.g., gemini-3.1-flash-lite-preview, or gemini-2.5-flash-lite).
Actual result
The API request fails with a quota error, revealing that the request was routed to gemini-3.1-pro instead of the user-defined gemini-3.1-flash-lite-preview, or gemini-2.5-flash-lite.
Variations tried (optional)
- If I select a model that already exists in the predefined list, it works as expected.
- The exact same silent fallback bug occurs when using the GCP Vertex AI provider.
App Version
3.52.1
API Provider (optional)
Google Gemini
Model Used (optional)
gemini-3.1-flash-lite-preview,
Roo Code Task Links (optional)
No response
Relevant logs or errors (optional)
Date/time: 2026-04-16T17:41:26.401Z
Extension version: 3.52.1
Provider: gemini
Model: gemini-3.1-flash-lite-preview
Gemini 生成上下文流错误:{"error":{"message":"{\n \"error\": {\n \"code\": 429,\n \"message\": \"You exceeded your current quota, please check your plan and billing details. For more information on this error, head to: https://ai.google.dev/gemini-api/docs/rate-limits. To monitor your current usage, head to: https://ai.dev/rate-limit. \\n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_input_token_count, limit: 0, model: gemini-3.1-pro\\n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_requests, limit: 0, model: gemini-3.1-pro\\n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_requests, limit: 0, model: gemini-3.1-pro\\n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_input_token_count, limit: 0, model: gemini-3.1-pro\\nPlease retry in 33.912482576s.\",\n \"status\": \"RESOURCE_EXHAUSTED\",\n \"details\": [\n {\n \"@type\": \"type.googleapis.com/google.rpc.Help\",\n \"links\": [\n {\n \"description\": \"Learn more about Gemini API quotas\",\n \"url\": \"https://ai.google.dev/gemini-api/docs/rate-limits\"\n }\n ]\n },\n {\n \"@type\": \"type.googleapis.com/google.rpc.QuotaFailure\",\n \"violations\": [\n {\n \"quotaMetric\": \"generativelanguage.googleapis.com/generate_content_free_tier_input_token_count\",\n \"quotaId\": \"GenerateContentInputTokensPerModelPerMinute-FreeTier\",\n \"quotaDimensions\": {\n \"location\": \"global\",\n \"model\": \"gemini-3.1-pro\"\n }\n },\n {\n \"quotaMetric\": \"generativelanguage.googleapis.com/generate_content_free_tier_requests\",\n \"quotaId\": \"GenerateRequestsPerMinutePerProjectPerModel-FreeTier\",\n \"quotaDimensions\": {\n \"location\": \"global\",\n \"model\": \"gemini-3.1-pro\"\n }\n },\n {\n \"quotaMetric\": \"generativelanguage.googleapis.com/generate_content_free_tier_requests\",\n \"quotaId\": \"GenerateRequestsPerDayPerProjectPerModel-FreeTier\",\n \"quotaDimensions\": {\n \"location\": \"global\",\n \"model\": \"gemini-3.1-pro\"\n }\n },\n {\n \"quotaMetric\": \"generativelanguage.googleapis.com/generate_content_free_tier_input_token_count\",\n \"quotaId\": \"GenerateContentInputTokensPerModelPerDay-FreeTier\",\n \"quotaDimensions\": {\n \"location\": \"global\",\n \"model\": \"gemini-3.1-pro\"\n }\n }\n ]\n },\n {\n \"@type\": \"type.googleapis.com/google.rpc.RetryInfo\",\n \"retryDelay\": \"33s\"\n }\n ]\n }\n}\n","code":429,"status":"Too Many Requests"}}
Problem (one or two sentences)
When entering a custom model name that is not in the predefined list for Google Gemini or GCP Vertex AI, the extension silently overrides the user's input and sends the API request using the default model (gemini-3.1-pro). This is structurally highly identical to the issue reported in #12074 .
Context (who is affected and when)
Reproduction steps
Expected result
The extension should strictly respect the custom model name entered by the user and send the API request using exactly that model (e.g., gemini-3.1-flash-lite-preview, or gemini-2.5-flash-lite).
Actual result
The API request fails with a quota error, revealing that the request was routed to gemini-3.1-pro instead of the user-defined gemini-3.1-flash-lite-preview, or gemini-2.5-flash-lite.
Variations tried (optional)
App Version
3.52.1
API Provider (optional)
Google Gemini
Model Used (optional)
gemini-3.1-flash-lite-preview,
Roo Code Task Links (optional)
No response
Relevant logs or errors (optional)
Date/time: 2026-04-16T17:41:26.401Z Extension version: 3.52.1 Provider: gemini Model: gemini-3.1-flash-lite-preview Gemini 生成上下文流错误:{"error":{"message":"{\n \"error\": {\n \"code\": 429,\n \"message\": \"You exceeded your current quota, please check your plan and billing details. For more information on this error, head to: https://ai.google.dev/gemini-api/docs/rate-limits. To monitor your current usage, head to: https://ai.dev/rate-limit. \\n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_input_token_count, limit: 0, model: gemini-3.1-pro\\n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_requests, limit: 0, model: gemini-3.1-pro\\n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_requests, limit: 0, model: gemini-3.1-pro\\n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_input_token_count, limit: 0, model: gemini-3.1-pro\\nPlease retry in 33.912482576s.\",\n \"status\": \"RESOURCE_EXHAUSTED\",\n \"details\": [\n {\n \"@type\": \"type.googleapis.com/google.rpc.Help\",\n \"links\": [\n {\n \"description\": \"Learn more about Gemini API quotas\",\n \"url\": \"https://ai.google.dev/gemini-api/docs/rate-limits\"\n }\n ]\n },\n {\n \"@type\": \"type.googleapis.com/google.rpc.QuotaFailure\",\n \"violations\": [\n {\n \"quotaMetric\": \"generativelanguage.googleapis.com/generate_content_free_tier_input_token_count\",\n \"quotaId\": \"GenerateContentInputTokensPerModelPerMinute-FreeTier\",\n \"quotaDimensions\": {\n \"location\": \"global\",\n \"model\": \"gemini-3.1-pro\"\n }\n },\n {\n \"quotaMetric\": \"generativelanguage.googleapis.com/generate_content_free_tier_requests\",\n \"quotaId\": \"GenerateRequestsPerMinutePerProjectPerModel-FreeTier\",\n \"quotaDimensions\": {\n \"location\": \"global\",\n \"model\": \"gemini-3.1-pro\"\n }\n },\n {\n \"quotaMetric\": \"generativelanguage.googleapis.com/generate_content_free_tier_requests\",\n \"quotaId\": \"GenerateRequestsPerDayPerProjectPerModel-FreeTier\",\n \"quotaDimensions\": {\n \"location\": \"global\",\n \"model\": \"gemini-3.1-pro\"\n }\n },\n {\n \"quotaMetric\": \"generativelanguage.googleapis.com/generate_content_free_tier_input_token_count\",\n \"quotaId\": \"GenerateContentInputTokensPerModelPerDay-FreeTier\",\n \"quotaDimensions\": {\n \"location\": \"global\",\n \"model\": \"gemini-3.1-pro\"\n }\n }\n ]\n },\n {\n \"@type\": \"type.googleapis.com/google.rpc.RetryInfo\",\n \"retryDelay\": \"33s\"\n }\n ]\n }\n}\n","code":429,"status":"Too Many Requests"}}