Skip to content

Remove Gemini CLI support - #2570

Merged
Soph merged 4 commits into
mainfrom
soph/remove-gemini
Sep 24, 2026
Merged

Soph merged 4 commits into
mainfrom
soph/remove-gemini

Conversation

@Soph

@Soph Soph commented Sep 23, 2026 •

Copy link
Copy Markdown
Collaborator

https://entire.io/gh/entireio/cli/trails/1410

Summary

Removes Gemini CLI as a supported agent. The agent/geminicli package is gone, along with everything that installed its hooks, captured its sessions, or used it as a review runner, summary provider, session importer, resume target, or skill target. Its E2E runner, CI matrix entries and secrets, and the docs go too.

Two things are kept for repositories that already used Gemini with Entire.

Hooks already installed in .gemini/settings.json. Nothing re-runs setup when the CLI is upgraded, so those hooks would otherwise fail on every Gemini event.

  • entire hooks gemini <verb> now exits 0 silently. The check runs after external-agent discovery, so a plugin can still claim the name.
  • entire doctor, entire disable --uninstall and entire agent remove gemini remove Entire's entries and keep the user's own hooks, matchers and settings (retired_gemini.go).
  • Uninstall's "nothing installed" preflight and its confirmation summary include these hooks, even when they are the only artifact left. An unreadable file blocks the "not installed" claim and fails the run instead of being rewritten.
  • entire configure --agent gemini now says Gemini CLI is no longer supported, instead of "Unknown agent".

Historical checkpoints. Checkpoints tagged Gemini CLI store a single JSON document, not JSONL. A read-only parser in transcript/geminilegacy keeps explain, summaries and the reassembly of large split transcripts working for them. AgentTypeGemini survives only for this.

Behavior changes worth a look

  • Shadow-branch detection: .gemini/settings.json no longer counts as an agent marker when detecting which agent made a shadow branch.
  • Task checkpoints: they now split large transcripts using opts.Agent, as persistent checkpoints already did, instead of DetectAgentTypeFromContent. That function only ever recognized Gemini and is deleted.
  • Condensation: it no longer parses Gemini JSON, either for Gemini sessions or as a fallback for the Unknown agent type.
  • Symlinked config: .gemini is no longer vouchable. An existing allow_symlinked_agent_dirs entry for it gets the usual "not an agent config directory" warning; settings still load.
  • Dogfood config: the Entire hooks are stripped from the repo's own .gemini/settings.json, and .gemini/test-hooks.sh is deleted.

Not handled

  • Settings that name gemini as the summary provider or as a review agent fail when those features run, without a Gemini-specific message.
  • Gemini skill files already written into repos (.gemini/agents/entire.md and the search skill) are left in place. They are harmless.
  • CHANGELOG.md history and the tools/complexity/ baselines are unchanged; there is a new Unreleased entry.

Test plan

  • mise run fmt && mise run lint: 0 issues
  • GOOS=windows go vet ./...
  • mise run test:ci (unit + integration + Vogon canary)
  • New tests in retired_gemini_test.go cover hook stripping, the no-op hook command, doctor, uninstall (including the leftover-file-only and unreadable-file cases) and agent remove gemini. The uninstall regression tests were checked to fail with the preflight change removed.
  • geminilegacy parser tests, plus a chunking test for reassembling historical Gemini chunks

🤖 Generated with Claude Code


Note

High Risk
Breaking removal of a full agent integration with hook uninstall/migration paths; incorrect handling could break upgrades for repos that still have Gemini hooks or old checkpoints.

Overview
Removes Gemini CLI as a supported agent — the geminicli package, hook install/capture, review runner, summary provider, import/resume, skills setup, E2E runner, and CI matrix entries (GEMINI_API_KEY, default all-agents runs) are deleted. Docs, entire enable/configure, and dogfood .gemini/settings.json no longer mention or wire Gemini.

Migration for existing users: entire configure --agent gemini now reports unsupported. Leftover Entire hooks in .gemini/settings.json are handled by retired_gemini — entire hooks gemini no-ops (exit 0), while doctor, disable --uninstall, and agent remove gemini strip only Entire entries. Historical checkpoints tagged Gemini CLI still work via read-only transcript/geminilegacy and AgentTypeGemini handling in chunk reassembly/explain.

Other behavior tweaks: shadow-branch agent detection no longer treats .gemini as a marker; large transcript chunking for tasks uses opts.Agent instead of removed content-based Gemini detection; .gemini is no longer a vouchable symlinked agent config dir.

Reviewed by Cursor Bugbot for commit 844e915. Configure here.

Drop the geminicli agent package and everything that registered, installed,
captured, reviewed, summarized, imported, or resumed Gemini sessions, plus
its E2E runner, CI matrix entries, skills, and docs.

Two things stay for users who already used Gemini with Entire:

- Hooks left in .gemini/settings.json: `entire hooks gemini <verb>` is now a
  silent no-op, and `entire doctor`, `entire disable --uninstall`, and
  `entire agent remove gemini` strip Entire's entries while keeping the
  user's own hooks and settings. Uninstall's preflight and summary see them
  even when they are the only artifact left.
- Historical checkpoints: a read-only parser in transcript/geminilegacy
  keeps explain, summaries, and chunk reassembly working for checkpoints
  tagged "Gemini CLI".

Task checkpoints now chunk with the session's agent type instead of
DetectAgentTypeFromContent, which only ever recognized Gemini.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Entire-Checkpoint: 01M376R2X4FQ0PQDXHM07WS96R
@Soph
Soph requested a review from a team as a code owner September 23, 2026 13:20
Copilot AI lite review requested due to automatic review settings September 23, 2026 13:20

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit 844e915. Configure here.

Comment thread cmd/entire/cli/retired_gemini.go

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟡 Changes recommended

Unresolved critical transcript-data loss and fixture failures remain, along with a cleanup error-propagation issue.

Get a fresh assessment by requesting another Copilot review.

Review effort: Lite
Findings: 2 High severity

Open (2)
What changed in this PR

Removes active Gemini CLI support while preserving cleanup for existing hooks and read-only access to historical Gemini checkpoints.

Changes:

  • Deletes Gemini integration, E2E, CI, import, review, resume, summary, and skill support.
  • Adds retired-hook no-op and cleanup handling.
  • Adds legacy transcript parsing and updates related documentation and tests.
File Summary
WINDOWS.md Removes Gemini references.
README.md Updates supported-agent documentation.
mise-tasks/​test/​e2e/​_default Removes Gemini E2E configuration.
e2e/​testutil/​session_paths.go Removes Gemini registration.
e2e/​testutil/​repo.go Removes Gemini test setup.
e2e/​README.md Removes Gemini E2E documentation.
e2e/​agents/​opencode_test.go Relocates shared test setup.
e2e/​agents/​gemini.go Deletes the Gemini runner.
e2e/​agents/​gemini_test.go Deletes Gemini runner tests.
e2e/​agents/​agent.go Removes Gemini examples.
docs/​security-and-privacy.md Removes Gemini documentation.
docs/​first-time-contributors.md Updates supported-agent guidance.
docs/​development/​testing.md Removes Gemini test guidance.
docs/​development/​filesystem-safety.md Documents retired Gemini cleanup.
docs/​development/​caller-session-resolution.md Removes Gemini examples.
docs/​architecture/​sessions-and-checkpoints.md Updates the agent overview.
docs/​architecture/​review-command.md Removes Gemini review references.
docs/​architecture/​agent-integration-checklist.md Removes Gemini examples.
CONTRIBUTING.md Updates integration guidance.
cmd/​entire/​cli/​uiform/​uiform_test.go Removes the Gemini picker option.
cmd/​entire/​cli/​transcript/​geminilegacy/​transcript.go Adds historical Gemini parsing. Critical (2 votes): chunk reassembly drops fields such as timestamp, tokens, thoughts, tool-call results, and sessionId; preserve raw or unknown JSON fields.
cmd/​entire/​cli/​transcript/​geminilegacy/​transcript_test.go Tests legacy transcript parsing.
cmd/​entire/​cli/​transcript.go Updates transcript documentation.
cmd/​entire/​cli/​telemetry/​skill_official.go Removes Gemini skill references.
cmd/​entire/​cli/​summarize/​summarize.go Uses the legacy parser.
cmd/​entire/​cli/​strategy/​telemetry_signals.go Generalizes telemetry wording.
cmd/​entire/​cli/​strategy/​strategy.go Updates transcript metadata wording.
cmd/​entire/​cli/​strategy/​session_state.go Removes Gemini lifecycle comments.
cmd/​entire/​cli/​strategy/​restore_logs_test.go Removes Gemini test coverage.
cmd/​entire/​cli/​strategy/​phase_postcommit_test.go Updates transcript fixtures.
cmd/​entire/​cli/​strategy/​manual_commit_hooks.go Generalizes subagent comments.
cmd/​entire/​cli/​strategy/​manual_commit_condensation.go Removes active Gemini handling.
cmd/​entire/​cli/​strategy/​content_overlap_test.go Generalizes test comments.
cmd/​entire/​cli/​strategy/​common.go Removes Gemini marker detection.
cmd/​entire/​cli/​strategy/​common_test.go Updates marker tests.
cmd/​entire/​cli/​strategy/​commit_hook_perf_test.go Updates performance fixtures.
cmd/​entire/​cli/​strategy/​caller_session.go Removes Gemini examples.
cmd/​entire/​cli/​strategy/​caller_session_test.go Updates ancestry examples.
cmd/​entire/​cli/​setup.go Adds retired Gemini cleanup paths.
cmd/​entire/​cli/​setup_search_skill.go Removes Gemini skill paths.
cmd/​entire/​cli/​setup_search_skill_test.go Removes Gemini cases.
cmd/​entire/​cli/​setup_managed_scaffold.go Removes Gemini scaffold references.
cmd/​entire/​cli/​setup_agent_help_skill.go Removes Gemini help skill support.
cmd/​entire/​cli/​setup_agent_help_skill_test.go Removes Gemini skill tests.
cmd/​entire/​cli/​settings/​settings.go Updates provider documentation.
cmd/​entire/​cli/​settings/​agent_prompt_trust_test.go Replaces Gemini fixtures.
cmd/​entire/​cli/​sessions.go Retains legacy transcript reading.
cmd/​entire/​cli/​sessions_test.go Updates session fixtures.
cmd/​entire/​cli/​session/​state.go Updates agent documentation.
cmd/​entire/​cli/​review/​types/​template.go Removes the Gemini adapter reference.
cmd/​entire/​cli/​review/​types/​reviewer.go Updates reviewer documentation.
cmd/​entire/​cli/​review/​synthesis_prompt_test.go Replaces Gemini fixtures.
cmd/​entire/​cli/​review/​run_test.go Replaces Gemini fixtures.
cmd/​entire/​cli/​review/​profile.go Removes Gemini review selection.
cmd/​entire/​cli/​review/​picker.go Updates setup error text.
cmd/​entire/​cli/​review/​picker_test.go Updates picker fixtures.
cmd/​entire/​cli/​review/​manifest_test.go Replaces Gemini fixtures.
cmd/​entire/​cli/​review/​helpers_internal_test.go Critical (1 vote): the replacement leaves duplicate pi entries and causes the expected agent-list assertion to fail.
cmd/​entire/​cli/​review/​dump_test.go Replaces Gemini fixtures.
cmd/​entire/​cli/​review/​cmd.go Removes Gemini review references.
cmd/​entire/​cli/​review/​cmd_test.go Updates model-list tests.
cmd/​entire/​cli/​review/​args.go Updates adapter documentation.
cmd/​entire/​cli/​review_helpers.go Updates review-flow comments.
cmd/​entire/​cli/​review_bridge.go Removes Gemini reviewer wiring.
cmd/​entire/​cli/​retired_gemini.go Adds legacy hook cleanup.
cmd/​entire/​cli/​lifecycle.go Removes Gemini lifecycle references.
cmd/​entire/​cli/​lifecycle_test.go Updates lifecycle tests.
cmd/​entire/​cli/​integration_test/​testenv.go Removes the Gemini test environment.
cmd/​entire/​cli/​integration_test/​setup_gemini_hooks_test.go Deletes Gemini hook tests.
cmd/​entire/​cli/​integration_test/​login_test.go Removes Gemini environment setup.
cmd/​entire/​cli/​hooks_cmd.go Adds retired-hook no-op handling.
cmd/​entire/​cli/​hook_registry.go Removes Gemini hook registration.
cmd/​entire/​cli/​hook_registry_test.go Updates hook fixtures.
cmd/​entire/​cli/​explain.go Uses legacy Gemini parsing.
cmd/​entire/​cli/​explain_test.go Updates provider fixtures.
cmd/​entire/​cli/​explain_summary_provider.go Removes Gemini provider guidance.
cmd/​entire/​cli/​explain_summary_provider_test.go Updates provider fixtures.
cmd/​entire/​cli/​doctor.go Moderate (1 vote): unreadable or malformed settings report failure but the caller can still return success; propagate the error or set finalErr.
cmd/​entire/​cli/​doctor_test.go Updates symlink tests.
cmd/​entire/​cli/​dispatch_test.go Replaces Gemini fixtures.
cmd/​entire/​cli/​commit_message_test.go Replaces Gemini fixtures.
cmd/​entire/​cli/​checkpoint/​subagent_transcript.go Updates chunking documentation.
cmd/​entire/​cli/​checkpoint/​ephemeral.go Uses explicit agent type for chunking.
cmd/​entire/​cli/​checkpoint/​checkpoint.go Documents explicit agent type usage.
cmd/​entire/​cli/​attach.go Removes Gemini normalization.
cmd/​entire/​cli/​attach_transcript.go Removes Gemini metadata parsing.
cmd/​entire/​cli/​agentimport/​linesplit.go Removes Gemini import comments.
cmd/​entire/​cli/​agentimport/​gemini.go Deletes the Gemini importer.
cmd/​entire/​cli/​agentimport/​gemini_test.go Deletes Gemini importer tests.
cmd/​entire/​cli/​agentimport/​factory.go Updates importer documentation.
cmd/​entire/​cli/​agentimport/​cursor.go Updates importer documentation.
cmd/​entire/​cli/​agentimport/​agentimport.go Removes Gemini importer registration.
cmd/​entire/​cli/​agentimport/​agentimport_test.go Updates importer registry tests.
cmd/​entire/​cli/​agent/​vouched_dirs.go Removes Gemini symlink vouching.
cmd/​entire/​cli/​agent/​vouched_dirs_test.go Updates symlink tests.
cmd/​entire/​cli/​agent/​types/​agent.go Updates type documentation.
cmd/​entire/​cli/​agent/​transcript_read_guard_test.go Removes the deleted-package guard.
cmd/​entire/​cli/​agent/​text_generator_cli.go Removes the Gemini summary binary.
cmd/​entire/​cli/​agent/​testutil/​hooks.go Updates hook documentation.
cmd/​entire/​cli/​agent/​skilldiscovery/​registry.go Removes Gemini skill entries.
cmd/​entire/​cli/​agent/​skilldiscovery/​registry_test.go Updates skill tests.
cmd/​entire/​cli/​agent/​session_store.go Updates storage comments.
cmd/​entire/​cli/​agent/​resume_command.go Removes Gemini resume support.
cmd/​entire/​cli/​agent/​resume_command_test.go Removes the Gemini resume test.
cmd/​entire/​cli/​agent/​resume_command_registry_test.go Removes Gemini registration tests.
cmd/​entire/​cli/​agent/​registry.go Retains the historical Gemini type.
cmd/​entire/​cli/​agent/​registry_test.go Tests the historical Gemini type.
cmd/​entire/​cli/​agent/​pi/​pi.go Updates agent documentation.
cmd/​entire/​cli/​agent/​pi/​models.go Updates model documentation.
cmd/​entire/​cli/​agent/​opencode/​opencode.go Updates path documentation.
cmd/​entire/​cli/​agent/​inject.go Removes Gemini injection documentation.
cmd/​entire/​cli/​agent/​hook_config_file.go Removes active Gemini config references.
cmd/​entire/​cli/​agent/​generate_external_test.go Removes Gemini generator tests.
cmd/​entire/​cli/​agent/​geminicli/​types.go Deletes Gemini types.
cmd/​entire/​cli/​agent/​geminicli/​testdata/​canned_session.txt Deletes Gemini fixture data.
cmd/​entire/​cli/​agent/​geminicli/​spawner.go Deletes the Gemini spawner.
cmd/​entire/​cli/​agent/​geminicli/​spawner_test.go Deletes Gemini spawner tests.
cmd/​entire/​cli/​agent/​geminicli/​reviewer.go Deletes the Gemini reviewer.
cmd/​entire/​cli/​agent/​geminicli/​lifecycle.go Deletes Gemini lifecycle support.
cmd/​entire/​cli/​agent/​geminicli/​generate.go Deletes Gemini generation support.
cmd/​entire/​cli/​agent/​geminicli/​discovery.go Deletes Gemini skill discovery.
cmd/​entire/​cli/​agent/​geminicli/​discovery_test.go Deletes Gemini discovery tests.
cmd/​entire/​cli/​agent/​event.go Generalizes model-event documentation.
cmd/​entire/​cli/​agent/​copilotcli/​AGENT.md Updates agent examples.
cmd/​entire/​cli/​agent/​chunking.go Adds historical Gemini reassembly.
cmd/​entire/​cli/​agent/​chunking_test.go Tests historical reassembly.
cmd/​entire/​cli/​agent/​capabilities.go Updates capability documentation.
cmd/​entire/​cli/​agent/​caller_session.go Removes Gemini environment references.
cmd/​entire/​cli/​agent/​caller_session_test.go Updates caller tests.
cmd/​entire/​cli/​agent/​architecture_test.go Updates package examples.
cmd/​entire/​cli/​agent/​agent.go Updates agent interface documentation.
cmd/​entire/​cli/​agent_hook_config_guard_test.go Updates guard examples.
cmd/​entire/​cli/​agent_help_banner_test.go Removes the Gemini case.
cmd/​entire/​cli/​agent_group.go Updates command examples.
CHANGELOG.md Nit (1 vote): the Unreleased migration bullet ends incompletely at “and summaries”; clarify that historical checkpoints remain readable.
.gitignore Removes a Gemini test artifact.
.github/​workflows/​nightly-e2e.yml Removes Gemini CI references.
.github/​workflows/​e2e.yml Removes the Gemini matrix and secret.
.github/​ISSUE_TEMPLATE/​bug_report.yml Updates the agent placeholder.
.github/​copilot-instructions.md Updates the repository overview.
.gemini/​test-hooks.sh Deletes the Gemini hook test script.
.gemini/​settings.json Removes dogfood Gemini hooks.
.claude/​skills/​agent-integration/​test-writer.md Updates agent examples.
.claude/​skills/​agent-integration/​SKILL.md Updates agent examples.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread cmd/entire/cli/review/helpers_internal_test.go Outdated
Comment thread cmd/entire/cli/transcript/geminilegacy/transcript.go Outdated
Soph and others added 2 commits September 23, 2026 15:50
- Retired hook cleanup also drops non-array values under "hooks" (the
  "enabled": true old Entire versions wrote), which Gemini CLI 0.33+
  rejects; leaving it would rewrite settings Gemini refuses to load.
- Condensation handles Gemini sessions again: one still in the session
  store when support was removed is condensed on the next commit, and
  needs message-index counting and scoping via geminilegacy.
- geminilegacy.ReassembleChunks keeps messages as raw JSON so fields the
  read model does not declare survive.
- Fix a review test fixture that listed pi twice.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Entire-Checkpoint: 01M378FRCSCMP94TC2HKAEEFDB
- A symlinked .gemini reads as nothing to do. It is no longer vouchable,
  so reporting it failed every doctor run and uninstall with a remedy
  that could not clear it.
- Only the legacy hooks.enabled is dropped, and only beside Entire's own
  entries; other non-array keys stay, and none alone signals "installed".
  Rewrites keep the file's permissions.
- Every retired path defers to a plugin claiming "gemini", registered or
  merely on PATH (looked up, never executed): cleanup, agent remove, the
  unknown-agent message, and the hook no-op, which now errors for an
  installed plugin that discovery missed.
- doctor reports summary_generation.provider still naming gemini.
- Shadow-branch detection maps a lone .gemini/settings.json to Gemini CLI
  again, as a last resort only, so in-flight sessions stay readable
  without making later sessions of another agent ambiguous.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Entire-Checkpoint: 01M37BJ1ZPM8ZWAKCS3FMGHSS8
@Soph
Soph merged commit 6e2b9bc into main Sep 24, 2026
16 checks passed
@Soph
Soph deleted the soph/remove-gemini branch September 24, 2026 11:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

3 participants