fix: remove automatic antigravity plugin installation

Remove the automatic installation of opencode-antigravity-auth plugin
when users have Gemini configured. This change addresses several issues:

1. Antigravity plugin is causing Google account bans for users
2. Users are unaware the plugin was auto-installed
3. Google has built-in OAuth for Gemini that doesn't require third-party plugins

Users who need the antigravity plugin can manually add it to their
plugin configuration if desired.

Fixes issues with unexpected plugin installation and account safety.
This commit is contained in:
YeonGyu-Kim 2026-02-19 15:30:56 +09:00
parent 6909e5fb4c
commit 7027b55c56
2 changed files with 16 additions and 15 deletions

View File

@ -43,7 +43,7 @@ const testConfig: InstallConfig = {
describe("addAuthPlugins", () => { describe("addAuthPlugins", () => {
describe("Test 1: JSONC with commented plugin line", () => { describe("Test 1: JSONC with commented plugin line", () => {
it("preserves comment, updates actual plugin array", async () => { it("preserves comment, does NOT add antigravity plugin", async () => {
const content = `{ const content = `{
// "plugin": ["old-plugin"] // "plugin": ["old-plugin"]
"plugin": ["existing-plugin"], "plugin": ["existing-plugin"],
@ -59,17 +59,18 @@ describe("addAuthPlugins", () => {
const newContent = readFileSync(result.configPath, "utf-8") const newContent = readFileSync(result.configPath, "utf-8")
expect(newContent).toContain('// "plugin": ["old-plugin"]') expect(newContent).toContain('// "plugin": ["old-plugin"]')
expect(newContent).toContain('existing-plugin') expect(newContent).toContain('existing-plugin')
expect(newContent).toContain('opencode-antigravity-auth') // antigravity plugin should NOT be auto-added anymore
expect(newContent).not.toContain('opencode-antigravity-auth')
const parsed = parseJsonc<Record<string, unknown>>(newContent) const parsed = parseJsonc<Record<string, unknown>>(newContent)
const plugins = parsed.plugin as string[] const plugins = parsed.plugin as string[]
expect(plugins).toContain('existing-plugin') expect(plugins).toContain('existing-plugin')
expect(plugins.some((p) => p.startsWith('opencode-antigravity-auth'))).toBe(true) expect(plugins.some((p) => p.startsWith('opencode-antigravity-auth'))).toBe(false)
}) })
}) })
describe("Test 2: Plugin array already contains antigravity", () => { describe("Test 2: Plugin array already contains antigravity", () => {
it("does not add duplicate", async () => { it("preserves existing antigravity, does not add another", async () => {
const content = `{ const content = `{
"plugin": ["existing-plugin", "opencode-antigravity-auth"], "plugin": ["existing-plugin", "opencode-antigravity-auth"],
"provider": {} "provider": {}
@ -87,6 +88,7 @@ describe("addAuthPlugins", () => {
const antigravityCount = plugins.filter((p) => p.startsWith('opencode-antigravity-auth')).length const antigravityCount = plugins.filter((p) => p.startsWith('opencode-antigravity-auth')).length
expect(antigravityCount).toBe(1) expect(antigravityCount).toBe(1)
expect(plugins).toContain('existing-plugin')
}) })
}) })
@ -156,7 +158,7 @@ describe("addAuthPlugins", () => {
}) })
describe("Test 6: No existing plugin array", () => { describe("Test 6: No existing plugin array", () => {
it("creates plugin array when none exists", async () => { it("creates empty plugin array when none exists, does NOT add antigravity", async () => {
const content = `{ const content = `{
"provider": {} "provider": {}
}` }`
@ -172,7 +174,9 @@ describe("addAuthPlugins", () => {
const parsed = parseJsonc<Record<string, unknown>>(newContent) const parsed = parseJsonc<Record<string, unknown>>(newContent)
expect(parsed).toHaveProperty('plugin') expect(parsed).toHaveProperty('plugin')
const plugins = parsed.plugin as string[] const plugins = parsed.plugin as string[]
expect(plugins.some((p) => p.startsWith('opencode-antigravity-auth'))).toBe(true) // antigravity plugin should NOT be auto-added anymore
expect(plugins.some((p) => p.startsWith('opencode-antigravity-auth'))).toBe(false)
expect(plugins.length).toBe(0)
}) })
}) })
@ -199,7 +203,7 @@ describe("addAuthPlugins", () => {
}) })
describe("Test 8: Multiple plugins in array", () => { describe("Test 8: Multiple plugins in array", () => {
it("appends to existing plugins", async () => { it("preserves existing plugins, does NOT add antigravity", async () => {
const content = `{ const content = `{
"plugin": ["plugin-1", "plugin-2", "plugin-3"], "plugin": ["plugin-1", "plugin-2", "plugin-3"],
"provider": {} "provider": {}
@ -218,7 +222,9 @@ describe("addAuthPlugins", () => {
expect(plugins).toContain('plugin-1') expect(plugins).toContain('plugin-1')
expect(plugins).toContain('plugin-2') expect(plugins).toContain('plugin-2')
expect(plugins).toContain('plugin-3') expect(plugins).toContain('plugin-3')
expect(plugins.some((p) => p.startsWith('opencode-antigravity-auth'))).toBe(true) // antigravity plugin should NOT be auto-added anymore
expect(plugins.some((p) => p.startsWith('opencode-antigravity-auth'))).toBe(false)
expect(plugins.length).toBe(3)
}) })
}) })
}) })

View File

@ -50,13 +50,8 @@ export async function addAuthPlugins(config: InstallConfig): Promise<ConfigMerge
const rawPlugins = existingConfig?.plugin const rawPlugins = existingConfig?.plugin
const plugins: string[] = Array.isArray(rawPlugins) ? rawPlugins : [] const plugins: string[] = Array.isArray(rawPlugins) ? rawPlugins : []
if (config.hasGemini) { // Note: opencode-antigravity-auth plugin auto-installation has been removed
const version = await fetchLatestVersion("opencode-antigravity-auth") // Users can manually add auth plugins if needed
const pluginEntry = version ? `opencode-antigravity-auth@${version}` : "opencode-antigravity-auth"
if (!plugins.some((p) => p.startsWith("opencode-antigravity-auth"))) {
plugins.push(pluginEntry)
}
}
const newConfig = { ...(existingConfig ?? {}), plugin: plugins } const newConfig = { ...(existingConfig ?? {}), plugin: plugins }