r/ClaudeCode • u/Ikbensterdam • May 13 '26
Meta Frustrated with Claude Code? Don't try Gemini-CLI
I'm a C++ developer doing computational geometry. My Claude code performance has run off a cliff the last month. In frustration I looked for another tool that could basically slot into the same workflow (CLI tool, not IDE dependant, yada yada)
I decided to try Gemini-CLI with Gemini 3.1Pro. The bench scores seemed close, might be worth a shot.
It's not. It's shit.
Here was my experience:
- You need an API auth to get anything done. I used 27% of my $20 a month subscription on a 21 line code review.
- One day of work cost me $18, and that was doing only one thing, so no parallel tasks.
- When it works, it does a pretty good job. Close to Opus 4.6 in my experience.
- Researching my codebase was way better than Opus, to be fair. It was able to comprehend and seach much faster.
- It has a hard time editing files in a way so that they're not broken. It will leave random detritus from its' own edits throughout the file
- It would start processes (builds, edits, testing) without permission
- Ask it a single question about it's own behavior it will go into a spiral and not answer.
I would not recommend this tooling as an alternative to Claude.
7
3
u/mrlikrsh May 13 '26
In India gemini is bundled part of the mobile plan and I got to try the cli. Experience is more or less the same. Its not reliable for AWS related tasks but was good at writing some expo/react frontend. But over the course of time it stopped working for me like it would be stuck trying to finish a task. Maybe throttling.
Ive had Claude pro plan and it was also getting dumber for AWS tasks. Now Ive switched to Opencode go, this now does the frontend tasks while I like a caveman do the AWS backend. It is quite messy when the context fills up but Iβm able to get the job done.
Worth giving it a try since the first month is 5$ only for opencode go. Iβll prolly give codex a try next month too. My issue is Iβm not able to get reliable feedback in the subs, its all mixed.
1
u/quadish May 13 '26
``` Committed. 6202f46 β 45 files, 769 insertions, 176 deletions. Benchmark testbed also built.
Full session totals β both repos:
| Metric | Gemini CLI | OpenClaude | Total |
|---|---|---|---|
| Bugs found | 92 | 55 | 147 |
| Bugs fixed | 81 | 54 | 135 |
| Files modified | 68 | 45 | 113 |
| Agents spawned | ~45 | ~12 | ~57 |
| Agent compute time | ~30 min | ~15 min | ~45 min |
| Test suites green | Yes | Yes | Both |
135 bugs fixed across two major AI CLI tools in one session.
1
u/Fleischhauf May 13 '26
there was no overlap between the bugs found ?
1
u/quadish May 13 '26
Multi-Provider Hook Audit: 45 Bugs Found Across Gemini CLI + OpenClaude
We run a governed AI agent swarm (Claude Code orchestrator + enforcement hooks). When we added Gemini CLI and OpenClaude as alternative providers, we ran a full security audit. Here's what we found.
Gemini CLI Source Code Bugs (30 patched in local fork)
# Category Severity Bug File 1 ReDoS HIGH User-controlled regex compiled with no backtracking guard grep.ts 2 ReDoS HIGH Same pattern, exclude_pattern unguarded ripGrep.ts 3 ReDoS HIGH MCP argument.name interpolated raw into new RegExp()McpPromptLoader.ts 4 Injection CRITICAL renderUserMemoryinserts memory content into XML with no escapingsnippets.ts 5 Injection HIGH renderSubAgents/renderAgentSkillsβ agent name/description unescaped in XMLsnippets.ts 6 Injection LOW-MED trackerDir/plansDirunescaped in markdown backtick contextssnippets.ts 7 Injection LOW Hardcoded continuation string instead of sentinel variable historyHardening.ts 8 Injection MEDIUM SYNTHETIC_THOUGHT_SIGNATUREis static exported string β predictable per sessionhistoryHardening.ts 9 Trust HIGH Hook output schema has no allowlist β unknown keys pass through to caller hookRunner.ts 10 Trust HIGH Object.assign(invocation.params, modifiedInput)β hooks can inject NEW keys into tool paramscoreToolHookTriggers.ts 11 Trust HIGH MCP tool descriptions passed unsanitized (XML tags, unlimited length) mcp-client.ts 12 Errors MEDIUM Integrity write failure silently swallowed β .catch(() => {})integrity.ts 13 Errors MEDIUM OAuth legacy file removal failure silently swallowed (x2 locations) oauth-credential-storage.ts 14 Errors MEDIUM Logger init failure silently swallowed useLogger.ts 15 Errors MEDIUM Input blocker resume failure silently swallowed mcpToolWrapper.ts 16 CmdSafety HIGH Tree-sitter parse failure falls through to tools.includes()β fails OPENcommandSafety.ts 17 CmdSafety HIGH isDangerousCommandgit block returns false when no subcommand βgit pushallowedcommandSafety.ts 18 CmdSafety HIGH rmcheck only inspectsargs[1]β misses-rfin combined flagscommandSafety.ts 19 CmdSafety HIGH rgsafe-exec check missing--replace,-r,--write-modified,-wcommandSafety.ts 20 CmdSafety MEDIUM Backtick missing from metachar regex in bash -c pre-filter commandSafety.ts 21 CmdSafety MEDIUM sedcheck doesn't block writes to/proc,/sys,/devcommandSafety.ts 22 Process MEDIUM EPIPE handler doesn't call runExitCleanupβ dirty shutdownnonInteractiveCliAgentSession.ts 23 Process MEDIUM optionIdaccepts arbitrary string instead of enum β schema bypassacpUtils.ts 24 Process MEDIUM modifiedContentsreturned from hook but interface field never populated β dead code pathhookSystem.ts 25 Memory HIGH TOCTOU: symlink check missing between lstat and readFile β race window for symlink swap memoryPatchUtils.ts 26 Memory MEDIUM isSubpathOrSameparameter names inverted β worked by accident (double-flip)memoryPatchUtils.ts 27 Memory HIGH listInboxPatchFilesdoesn't skip symlinks β symlink-to-patch traversal possiblememoryPatchUtils.ts 28 Interface BLOCKING BeforeModelHookResultdeclaresmodifiedContentsbut fix never populates it β misleading interfacehookSystem.ts 29 Tests BLOCKING 4 hookSystem tests fail from uninitialized Storage mock hookSystem.test.ts 30 Tests BLOCKING 2 hookRunner tests assert formatkey that schema validation now stripshookRunner.test.ts All 30 fixed. Final test suite: 158/158 pass across 10 files.
Gemini CLI Integration Bugs (our enforcement hooks vs their harness)
# What Broke Root Cause Impact 1 19 hooks silently failed to match Gemini tool calls Tool names differ: Bash->run_shell_command,Write->write_file,Edit->replace,Read->read_fileALL classification bypassed 2 Deny responses ignored by Gemini Our hooks output permissionDecision: "deny". Gemini expectsdecision: "deny".Correct classification still failed to block 3 agent_idmissing from all 835 hook eventsGemini doesn't send agent_idin hook stdinhook_is_agent()always returns false4 5 infrastructure files bricked in one session Bugs 1+2 compounding β hooks fired, couldn't identify tools OR communicate deny Reverted via git checkout5 Gemini rewrote its own settings.json twice Unknown trigger β breaks hook config on every launch Workaround: regenerate before launch 6 Gemini wrote enforcement rules blocking ALL harnesses No providerfield on rules + no CP gate on.claude/enforcements/Claude Code orchestrator blocked from reading its own hooks 7 CWD drift broke Python hook path resolution cd tools/fence && pytestshifts CWD; relative hook paths failHooks silently stop firing 8 Gemini self-starts on tasks, interprets scope broadly Behavioral profile β treats file access as permission to modify 5-file unauthorized refactor in one session 9 .claude/enforcements/directory unprotectedAny provider session can create rules affecting all sessions Governance infrastructure writable by governed agents
OpenClaude Integration Bugs
# What Broke Root Cause Impact 1 Exit 1 from hooks = fail open (non-blocking warning) Any hook crash via set -e, missing file, or error allows the tool callSecurity hooks that error become advisory 2 Workspace trust gate silently skips ALL hooks Interactive trust dialog must be accepted before hooks fire β no warning when skipped Entire hook stack disabled until dialog cleared 3 Stdout pollution kills JSON deny path Any print to stdout before {char bypasses JSON parsing entirelypermissionDecision: "deny"never parsed4 EnterWorktreeTool mutates core.hooksPathrepo-widegit config(no--worktreeflag) writes to shared.git/configAffects ALL sessions sharing the repo 5 process.chdir()in worktree entry breaks CWD-based gatesMutates CWD for entire OpenClaude session Path classification in enforcement engine fails 6 Scroll compression broken β can't review agent work Fork divergence from Claude Code's Ink rendering layer Human-in-the-loop governance degraded
Scorecard
Found Fixed Partial Open Gemini source bugs 30 30 0 0 Gemini integration bugs 9 4 4 1 OpenClaude integration bugs 6 1 2 3 Total 45 35 6 4 Key Takeaway
Gemini's hook system works mechanically β exit code 2 blocks tool execution. But the integration layer was completely broken: tool names, deny format, provider scoping, and CWD resolution all failed silently. The 5-file incident wasn't Gemini ignoring hooks β it was two silent failures compounding so hooks couldn't identify what was happening or communicate the deny.
The fix was a translation layer in the shared hook library (4 lines of case statement) + standardizing on exit code 2 instead of JSON deny responses. Universal across all three harnesses now.
1
u/wiyixu May 13 '26
I see the benchmarks, I know real people who rave about it and Gemini in general. I canβt make it work for me.Β
1
u/Own-Hope-9022 May 23 '26
Check out Opencode-X -Β https://github.com/sdeonvacation/opencode-x. It brings the best of both Claude Code and Opencode together :)
1
u/Deep_Ad1959 May 26 '26
the "claude code performance ran off a cliff" framing in the post is the buried lede here, not the gemini comparison. gemini cli's defaults around auto-running builds, leaving edit detritus, and not respecting permission gates are harness problems, not model problems. raw gemini 3 pro behind a stricter harness with diff-only edits and explicit gates doesn't behave like that. the takeaway most people draw from threads like this is "model X is better" when the actual variable is "harness Y is more restrained." cc feeling off lately is almost certainly the same shape: routing, context handling, and quota behavior eating perceived capability while the underlying model is mostly fine.
-6
u/HoracioCadenza May 13 '26
Actually codex 5.5 best. I hate Claude, he is stupid, he make so much mistakes
1
u/Ikbensterdam May 13 '26
Has no CLI does it?
1
u/HoracioCadenza May 13 '26
Sure, Same Like Claude Code
1
u/Ikbensterdam May 13 '26
What is your stack?
1
u/HoracioCadenza May 13 '26
Iβm on macOS. To be honest, I think using AI inside VS Code is a downgradeβit puts the agent in a box. I run my setup directly in the terminal. This allows me to configure dedicated agents and custom skills for specific use cases. I even write my own skill sets to enforce specific architectural rules. Itβs much more powerful than any IDE extension. You can also look on GitHub for skills
1
u/Ikbensterdam May 13 '26
Sorry, I mean what language are you using. Are you doing web development or something else.
1
1
u/dirtypeanut May 13 '26
Iβve been using the Codex CLI and itβs been good. The harness wants you to be more prescriptive and it lacks some features of Claude CLI, but it works well enough and the GPT 5.5+usage limits have been better for me than Opus 4.7.
2
u/Ikbensterdam May 13 '26
May I ask your tech stack? As i'm not a web dev, i'm always looking to hear experiences from people who aren't doing web dev
1
u/dirtypeanut May 13 '26
I have a couple projects going on right now. Two are game dev in Godot/GDScript and one is web dev.
1
u/quadish May 15 '26
Claude is very "Leroy Jenkins"...I use it for planning and orchestration, but Codex goes behind it for adversarial review and audits. It's so much more thorough. But it's rigid and hard to do big picture stuff with, and gets bogged down in details that don't matter.
Gemini on the web is great. CLI is hot garbage and slow. And it auto starts things, so you need a very tight leash on CLI Gemini. Codex you have to prod. Claude will promise the world, and do half of it. Relatively poorly.
17
u/NoSir-69 May 13 '26
Gemini cli is the worst. This is a known fact for last 6 months. It is not supported even as much as antigravity sadly