AI Coding Agents Compared: Claude Code vs Cursor vs Copilot vs OpenCode
A comprehensive comparison of the leading AI coding agents: autonomous execution capabilities, model availability, hooks/extensibility, and whether you can leverage existing subscriptions.
Summary
| If you want… | Use |
|---|---|
| Best hooks for custom automation | Claude Code or OpenCode |
| Turnkey autonomous execution | Cursor Background Agents or Copilot Coding Agent |
| Leverage Claude Pro/Max subscription | Claude Code or OpenCode |
| Leverage ChatGPT Plus/Pro subscription | OpenCode or Codex |
| Leverage GitHub Copilot subscription | GitHub Copilot or OpenCode |
| Open source + provider flexibility | OpenCode (75+ providers) |
| Multi-model in one subscription | GitHub Copilot or Cursor |
Why Tool Choice Matters
Beyond features and pricing, your choice of coding agent affects daily development in ways that aren’t obvious until you’re deep into a project. Before diving into comparisons, consider what actually differentiates these tools.
Instruction Adherence
Does the tool actually follow your rules, and keep following them?
Every tool supports project-level instructions (AGENTS.md, CLAUDE.md, .cursor/rules), but adherence varies. The issue isn’t whether the tool loads your instructions; it’s whether the model keeps following them as sessions progress and context pressure builds. Watch for drift over long sessions, whether it internalizes your codebase patterns or falls back to generic solutions, and what gets pruned first when the context window fills.
| Tool | Instruction File | Adherence Under Pressure | Known Issues |
|---|---|---|---|
| Claude Code | CLAUDE.md (hierarchical) | Strong — reminder tags in tool results, todo persistence | May drift on very long sessions; use /clear between tasks |
| OpenCode | AGENTS.md (CLAUDE.md fallback) | Strong — LSP integration aids understanding | Context loaded once at session start; restart for changes |
| Cursor | .cursor/rules/*.mdc | Variable — degrades in long chats | Start new sessions per task; avoid auto mode (unpredictable model switching) |
| GitHub Copilot | .github/copilot-instructions.md | Moderate — 64-128k window limits | Auto-summarizes at limit causing “memory wipe”; new agentic memory (Dec 2025) helps |
| Codex | AGENTS.md | Good — native support | Smaller community, less battle-tested |
| Kiro | specs/*.md | Good for spec-driven | Learns from code review over time; less immediate control |
Takeaway: Terminal agents (Claude Code, OpenCode) maintain stronger adherence through explicit context management. IDE-based tools trade some control for convenience; start fresh sessions per task to compensate.
Task Continuity & State
Sessions end. Context windows fill up. What survives?
When you hit context limits or return the next day, you need to pick up where you left off. Tools differ in how they persist state: some write to files you control, others manage state internally, and some rely on aggressive summarization that loses detail. This matters most for multi-day tasks and complex refactoring.
| Tool | State Persistence | Compaction Approach |
|---|---|---|
| Claude Code | Todo/plan files survive compaction | Structured summaries |
| OpenCode | Session state persisted, compaction events published | Transparent, configurable |
| Cursor | Platform memory features | Aggressive, less visible |
| GitHub Copilot | Workspace context in IDE | Actions environment isolated |
Takeaway: If you need predictable state recovery, prefer tools that externalize state to files (Claude Code’s todo.md pattern) or provide session management (OpenCode’s /sessions). Platform-managed state is convenient but opaque.
Model Selection & Transparency
Who decides which model handles your request?
Model choice affects output quality, cost, and behavior consistency. Some tools let you explicitly select models; others choose for you based on task complexity or load balancing. The risk with auto-selection: you can’t reproduce results or understand why behavior changed mid-session.
| Tool | Selection Mode | Transparency |
|---|---|---|
| Claude Code | Explicit | Full — you choose |
| OpenCode | Explicit | Full — you choose |
| GitHub Copilot | Hybrid | Multiple models, you choose |
| Cursor | Auto or manual | Auto unreliable; can switch mid-session silently |
| Kiro | Platform-managed | Limited in autonomous mode |
Takeaway: For reproducible workflows and debugging, explicit model selection wins. Auto-selection is fine for exploratory work but can frustrate when you need consistent behavior.
Context Window Management
Context is the scarcest resource. Your window must hold system prompt, instructions, code files, conversation history, and tool results. When it fills, something goes.
Different tools make different tradeoffs about what to keep and what to prune. Some prioritize recent conversation (good for back-and-forth), others prioritize code semantics (good for large refactors). Knowing what your tool drops helps you work with it rather than against it.
| Tool | Context Strategy | What Gets Prioritized |
|---|---|---|
| Claude Code | Todo lists persist, reminder tags in tool results | Instructions + recent task state |
| OpenCode | LSP integration, structured compaction | Code semantics + session state |
| Cursor | Aggressive pruning | Recent conversation (less visibility) |
| GitHub Copilot | IDE workspace indexing | Open files + workspace context |
Takeaway: Large codebase refactoring favors tools with semantic understanding (OpenCode’s LSP, Copilot’s workspace indexing). Rapid iteration favors conversation-focused tools (Cursor). Claude Code balances both with explicit state files.
Context Externalization & Temporary Files
How does each tool manage working files, scratchpads, and state persistence?
Tools that write to your workspace give you visibility and control but can clutter your project. Tools that isolate state externally keep workspaces clean but make debugging harder. This matters for git hygiene, CI pipelines, and team workflows where unexpected files cause friction.
| Tool | Temp File Location | Cleanup | State Storage | Workspace Hygiene |
|---|---|---|---|---|
| Claude Code | tmpclaude-*-cwd in project root |
Manual (known issue) | Markdown files in workspace (plan.md, todo.md) | Poor — add tmpclaude-* to .gitignore |
| OpenCode | ~/.local/share/opencode/storage/ |
Automatic | SQLite database per project | Good — isolated from workspace |
| Cursor | IDE-managed, .cursor/ directory |
Automatic | Platform memory, cloud index | Good — minimal footprint |
| GitHub Copilot | None in workspace | N/A | Repository-scoped memory (Dec 2025) | Good — no local artifacts |
| Codex | Cloud sandbox | Automatic | Session resume in cloud mode | Good — isolated sandbox |
Takeaway: Claude Code’s workspace approach trades hygiene for transparency: you can inspect and version state files. Other tools keep workspaces cleaner but hide state. Pick based on whether you value visibility or cleanliness.
Enterprise Considerations
For enterprise deployments, key concerns are data isolation and training exclusion. Some tools offer dedicated instances or contractual guarantees that your code won’t be used for model training. Check provider terms if this matters for your organization.
Quick Reference Tables
Configuration & Instructions
How each tool handles project-level instructions and AGENTS.md compatibility.
| Tool | Primary Config | AGENTS.md Support |
|---|---|---|
| Claude Code | CLAUDE.md | Workaround (@AGENTS.md or symlink) |
| Cursor | .cursor/rules | ✓ Native |
| Codex | AGENTS.md | ✓ Native |
| Kiro | Steering files, specs | ✓ Native |
| OpenCode | AGENTS.md | ✓ Native (CLAUDE.md fallback) |
| GitHub Copilot | copilot-instructions.md | ✓ Native (with frontmatter) |
Autonomous Execution Control
User-controlled (you run the loop) vs platform-controlled (they run it for you).
| Tool | User-Controlled | Platform-Controlled | Autonomous Flag |
|---|---|---|---|
| Claude Code | ✓ Primary | ✓ Web | --dangerously-skip-permissions |
| Cursor | ✗ | ✓ Background Agents | Platform-managed |
| Codex | ✓ Wrapper | ✓ Cloud | --yolo |
| Kiro | ✓ IDE hooks | ✓ Autonomous Agent | Platform-managed |
| OpenCode | ✓ Plugins + Wrapper | ✓ GitHub Actions | -p (non-interactive) |
| GitHub Copilot | ✗ | ✓ Coding Agent | Assign issue to Copilot |
Hooks & Extensibility
Lifecycle hooks enable custom automation; CLI wrappability enables external orchestration.
| Tool | Lifecycle Hooks | File Hooks | CLI Wrappable |
|---|---|---|---|
| Claude Code | Full (5 hooks) | ✗ | ✓ |
| Kiro | Lifecycle + manual | ✓ | ✓ |
| Codex | Notify only | ✗ | ✓ |
| Cursor | ✗ | ✗ | ✗ |
| OpenCode | Full (25+ events) | ✗ | ✓ |
| GitHub Copilot | ✗ | ✗ | ✓ (CLI) |
Feature Matrix
High-level capability comparison across all tools.
| Dimension | Claude Code | Cursor | Codex | Kiro | OpenCode | GitHub Copilot |
|---|---|---|---|---|---|---|
| Open Source | ✗ | ✗ | ✗ | ✗ | ✓ | ✗ |
| Provider Agnostic | ✗ | ✓ | ✗ | Partial | ✓ (75+) | ✓ (multi-model) |
| AGENTS.md Native | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Full Lifecycle Hooks | ✓ | ✗ | ✗ | ✓ | ✓ | ✗ |
| Platform Autonomous | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Claude Sub Support | ✓ Native | ✗ | ✗ | ✗ | ✓ Native | ✗ |
| MCP Support | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Model Families Available
Which model providers are accessible through each tool. OpenCode includes no bundled models but supports 75+ providers via API keys or native subscription OAuth. Cursor model availability varies by subscription tier.
| Tool | OpenAI | Anthropic | xAI | Local/Other | |
|---|---|---|---|---|---|
| Claude Code | ✗ | Claude 4 family | ✗ | ✗ | ✗ |
| Cursor | GPT-5, GPT-4.1, o3/o4-mini | Claude Opus 4.5, Sonnet 4 | Gemini 3 Pro, 2.5 Flash | Grok Code | DeepSeek, local models |
| Codex | GPT-5.1 Codex | ✗ | ✗ | ✗ | ✗ |
| OpenCode | ✅ Native or BYOK | ✅ Native or BYOK | Via BYOK | Via BYOK | 75+ providers |
| GitHub Copilot | GPT-5.1, GPT-4.1, o3/o4-mini | Claude Opus 4.5, Sonnet 4 | Gemini 3 Pro, 2.5 Flash | Grok Code Fast | Raptor mini |
Subscription Compatibility
Can You Leverage Existing Subscriptions?
This is one of the most asked questions, and the most dynamic area. Here’s the current landscape as of January 2026:
| Tool | Claude Pro/Max | ChatGPT Plus/Pro | GitHub Copilot | Own API Keys |
|---|---|---|---|---|
| Claude Code | ✅ Native | ✗ | ✗ | ✅ |
| OpenCode | ✅ Native | ✅ Native (v1.1.11+) | ✅ Native | ✅ 75+ providers |
| Cursor | ⚠️ Via Claude Code ext | ✗ | ✗ | ✅ BYOK (limited) |
| GitHub Copilot | ✗ | ✗ | ✅ Native | ✅ BYOK in Chat |
| Codex | ✗ | ✅ Native | ✗ | ✅ OpenAI API |
Key insight: Claude Code has an official VS Code extension that works in Cursor, Windsurf, and other VS Code-based editors. This lets you use your Claude Pro/Max subscription within these IDEs through Claude Code’s panel, while continuing to use the IDE’s native features (Tab completion, etc.) with their own models.
Claude Subscription Compatibility
All tools that use Claude subscriptions are subject to Anthropic’s rate limits, which can be aggressive especially on Opus 4.5. This is normal subscription behavior, not a tool issue.
Working options:
- ✅ Claude Code (CLI or VS Code extension)
- ✅ OpenCode with Claude Pro/Max OAuth
- ✅ Cursor/Windsurf with Claude Code extension
Tool Deep Dives
GitHub Copilot
Overview: Microsoft/GitHub’s coding assistant, now with autonomous coding agent capabilities. Available in VS Code, JetBrains, Eclipse, Xcode, Visual Studio, and GitHub.com.
On the key dimensions:
- Instruction adherence: Repository-wide instructions via copilot-instructions.md; new agentic memory (Dec 2025) auto-learns codebase patterns
- Model selection: Hybrid — multiple models available, you choose which to invoke
- Context management: IDE integration provides workspace context; Actions environment for coding agent
- Workspace hygiene: Clean — no local artifacts; repository-scoped memory stored server-side with 28-day expiry
Key features:
- Copilot Coding Agent — Assign GitHub issues to Copilot, it works autonomously and opens PRs
- Agent Mode in IDE — Autonomous multi-file editing with self-healing
- Multi-model support — Choose between GPT, Claude, Gemini, Grok models
- MCP support — Model Context Protocol for tool/context access
- GitHub Actions powered — Coding agent runs in secure Actions environment
Autonomous modes:
- IDE Agent Mode — Works in VS Code/JetBrains, edits locally, runs terminal commands
- Coding Agent — Works asynchronously on GitHub, creates PRs from issues
Configuration:
.github/
├── copilot-instructions.md # Repository-wide instructions
└── agents/ # Custom agent personas (frontmatter)
├── docs-agent.md
└── test-agent.md
Claude Code
Overview: Anthropic’s terminal-native coding agent with the most mature hook system for user-controlled autonomous execution.
On the key dimensions:
- Instruction adherence: Strong — persists todo lists and plans that survive compaction, injects reminder tags into tool results
- Model selection: Explicit — you choose, you know what you’re getting
- Context management: Todo/plan files persist across sessions; compaction preserves task state
Best Practices (from Anthropic Engineering):
CLAUDE.md optimization:
- Keep concise and human-readable; document bash commands, code style, testing instructions
- Use hierarchical placement: repo root, parent directories, child directories, or
~/.claude/CLAUDE.mdfor global - Run
/initto auto-generate; refine like any frequently used prompt - Add emphasis (“IMPORTANT”, “YOU MUST”) to improve adherence on critical instructions
Effective workflows:
- Explore → Plan → Code → Commit: Ask Claude to read files without coding, make a plan (use “think” to trigger extended thinking), implement, then commit
- TDD workflow: Write tests first, confirm they fail, then have Claude implement until tests pass
- Visual iteration: Give Claude screenshots of mocks, let it implement and iterate until it matches
Context management:
- Use
/clearfrequently between tasks to reset context window - For large tasks, have Claude use a Markdown checklist as working scratchpad
- Use subagents early in complex problems to preserve main context
Workspace hygiene:
- Creates
tmpclaude-*-cwdfiles in project root (bash working directory tracking); add to .gitignore - Encourages markdown scratchpads (progress.md, plan.md) directly in workspace
- Add to .gitignore:
tmpclaude-*,plan.md,*.scratchpad.md
Hooks:
PreToolUse— intercept before tool executionPostToolUse— react after tool completionStop— fires when agent finishes (key for Ralph loops)SessionEnd— cleanup on session endPermissionRequest— handle permission prompts
Custom slash commands:
# .claude/commands/fix-issue.md
Please analyze and fix the GitHub issue: $ARGUMENTS.
1. Use `gh issue view` to get issue details
2. Search codebase for relevant files
3. Implement fix, write tests
4. Create descriptive commit message
Autonomous wrapper:
while true; do
claude --dangerously-skip-permissions \
--read PROMPT.md \
--read AGENTS.md
if grep -q "TASK_COMPLETE" output; then
break
fi
sleep 5
done
AGENTS.md workaround:
# Option 1: Reference in CLAUDE.md
echo "@AGENTS.md" >> CLAUDE.md
# Option 2: Symlink
ln -s AGENTS.md CLAUDE.md
Cursor
Overview: IDE-first with Background Agents for platform-controlled autonomous execution. No user hooks.
On the key dimensions:
- Instruction adherence: Varies — performance degrades in long chats; Cursor warns to start new sessions per task
- Model selection: Manual recommended; auto mode unreliable (switches mid-session, model identity hidden)
- Context management: Aggressive optimization with less visibility into what’s pruned
- Workspace hygiene: Clean — codebase index stored externally (Turbopuffer),
.cursor/holds config only
Practitioner insights:
Per Render’s benchmark, Cursor scored highest overall (8.0/10) for:
- Setup speed and ease of use
- Docker/deployment workflows
- Code quality with minimal intervention
- RAG-like codebase indexing for context
Per Builder.io: “Cursor gives you exactly what you asked for,” which is precise but sometimes needs explicit guidance for broader implications.
Best for: Fast scaffolding, in-flow programming, familiar VS Code experience. Start new sessions per task to avoid context degradation.
Background Agents:
- Runs on isolated Ubuntu VMs
- Clone repo → work on branch → push results
- Auto-runs all terminal commands
- Configure via
.cursor/environment.json - Linear integration for issue assignment
Limitations:
- No lifecycle hooks
- No CLI for wrapping
- Trust Cursor’s judgment on completion
- Model availability depends on subscription tier
- Context window can reduce capacity for performance (128k normal, 200k Max Mode)
Codex (OpenAI)
Overview: Middle ground between user and platform control. CLI wrappable, cloud version platform-managed.
On the key dimensions:
- Instruction adherence: Native AGENTS.md support
- Model selection: Explicit — OpenAI models
- Context management: Session resume available in cloud mode
Cloud features:
- Isolated sandbox execution
- Returns PRs for review
- Session resume available
- Notify callbacks (limited event access)
Autonomous wrapper:
while true; do
output=$(codex exec --yolo -p "$(cat PROMPT.md)" 2>&1)
if echo "$output" | grep -q "TASK_COMPLETE"; then
break
fi
sleep 5
done
Kiro
Overview: Hybrid approach with both IDE hooks and cloud Autonomous Agent. Unique learning capability.
On the key dimensions:
- Instruction adherence: Unique — learns from code review feedback across tasks
- Model selection: Platform-managed in autonomous mode
- Context management: Steering files and specs provide structured context
Hooks:
agentTurn— fires on agent completionpromptSubmit— intercept before submissionfileSaved,fileCreated,fileDeleted— file eventsuserTriggered— manual triggers
Unique features:
- “Learns from code review feedback” across tasks
- Works across multiple repositories
- Assign via GitHub issues with
kirolabel
OpenCode
Overview: Open-source, provider-agnostic terminal agent supporting 75+ LLM providers. Rich TypeScript plugin system.
On the key dimensions:
- Instruction adherence: Strong — LSP integration provides semantic codebase understanding; publishes compaction events for visibility
- Model selection: Explicit — you choose, switch any time
- Context management: Transparent compaction with structured summaries; session state persisted
Best Practices:
AGENTS.md configuration:
- Place in project root for project-specific rules
- Use
~/.config/opencode/AGENTS.mdfor global rules across all sessions - Support for CLAUDE.md fallback if migrating from Claude Code
- Use
instructionsfield inopencode.jsonfor reusable rules:
{
"instructions": [
"docs/development-standards.md",
"packages/*/AGENTS.md"
]
}
Agent workflows:
- Use
Tabkey to switch betweenbuild(full access) andplan(read-only) agents - Invoke subagents with
@generalfor complex searches - Create custom agents in
.opencode/agent/directory with YAML frontmatter
Session management:
- View sessions with
/sessionsfor resuming work - Share session links for collaboration:
https://opencode.ai/s/{id} - Context loaded once at session start; restart for AGENTS.md changes
- All session data stored in
~/.local/share/opencode/storage/session/<project-id>/(SQLite + JSON) - Clean workspace with no temp files in project directory
Key features:
- Native AGENTS.md support (CLAUDE.md fallback)
- Two built-in agents:
build(full access) andplan(read-only) - GitHub Actions integration (
/opencodein comments) - Skills system for reusable instructions
- Desktop app and IDE extensions available
Plugin hooks (25+ events):
tool.execute.before— intercept before tool runstool.execute.after— react after completionsession.idle— fires when agent finishes turnchat.message— modify messagespermission.ask— handle permissions
Example plugin:
import type { Plugin } from "@opencode-ai/plugin";
export const AutoFormat: Plugin = async ({ $ }) => {
return {
tool: {
execute: {
after: async (input, output) => {
if (input.tool === "edit") {
await $`prettier --write ${output.args.filePath}`;
}
}
}
}
};
};
Autonomous wrapper:
while true; do
output=$(opencode -p "$(cat PROMPT.md)" -q 2>&1)
if echo "$output" | grep -q "TASK_COMPLETE"; then
break
fi
sleep 5
done
The Ralph Loop Pattern
Continuous autonomous execution for complex tasks. Three components:
- Completion Promise — Agent must meet specific criteria to exit
- External State Files — Memory outside context window
- Reflection Prompt — Review progress on each re-launch
State File Structure
.task/
├── goal.md # Success criteria
├── todo.md # Current breakdown
├── progress.md # What's done
├── decisions.md # Choices and rationale
└── errors.md # What failed
Backpressure Gates
- Downstream: Tests, type-checking, linting, build validation
- Upstream: Existing code patterns guide approach
- LLM-as-judge: For subjective criteria
When NOT to Use
- Ambiguous requirements (can’t define completion)
- Highly creative work (gates hard to define)
- Unfamiliar domains (can’t evaluate output)
- High-stakes first attempts
- Tasks requiring human judgment
Practitioner Assessments
Real-world insights from engineers who have used these tools extensively.
Render Engineering Benchmark (August 2025)
Render’s engineering team conducted structured tests across vibe coding (greenfield) and production codebases (Go API monorepo, Astro.js website). Their findings:
| Tool | Setup | Quality | Context | Speed | Average |
|---|---|---|---|---|---|
| Cursor | 9 | 9 | 8 | 9 | 8.0 |
| Claude Code | 8 | 7 | 5 | 7 | 6.8 |
| Gemini CLI | 6 | 7 | 9 | 5 | 6.8 |
| Codex | 3 | 8 | 7 | 7 | 6.0 |
Key observations:
- Cursor excelled at Docker/deployment and produced cleanest code with minimal intervention
- Claude Code best for rapid prototypes and productive terminal UX; context window strain showed on complex tasks
- Gemini CLI surprised with production refactoring despite struggling with boilerplate; massive context window helps existing codebases
- Codex model quality excellent but UX issues undermined confidence
Source: render.com/blog/ai-coding-agents-benchmark
Daniel Miessler on OpenCode vs Claude Code (July 2025)
Security researcher Daniel Miessler tested whether Claude Code’s “secret sauce” for keeping the plot together was truly unique:
“What I’m realizing is that maybe Claude Code’s secret sauce isn’t so secret after all. Maybe it’s just really good engineering around context windows, memory management, and keeping track of what you’re trying to accomplish across multiple files and multiple steps. Because OpenCode seems awfully good at doing exactly the same thing.”
His conclusion: OpenCode matches Claude Code’s coherence for complex workflows. Competition is driving rapid improvement across all tools.
Source: danielmiessler.com/blog/opencode-vs-claude-code
Matthew Groff on Terminal Agents (2025)
Developer Matthew Groff switched from Cursor to Claude Code + OpenCode and documented the productivity shift:
“The productivity gain isn’t incremental—it’s exponential. Tasks that would have taken days now take hours. Complex refactoring that I would have postponed indefinitely gets done in an afternoon.”
On OpenCode specifically: “Being open-source and model-agnostic means if the best agentic coding models change tomorrow, I don’t want to be locked into Claude Code.”
Source: groff.dev/blog/claude-code-opencode-productivity-boost
Builder.io Comparison (September 2025)
Builder.io’s deep comparison identified the core philosophical difference:
“Cursor gives you exactly what you asked for. Claude Code gives you what you asked for plus everything it thinks you’ll need. Sometimes that’s overkill. Most of the time, it’s exactly right.”
On context windows: “One immediate advantage Claude Code has is context window size. By default, it can hold way more code in its ‘memory’ than Cursor’s agent mode. When you’re working on large, interconnected codebases, that extra context can be the difference between the AI understanding your architecture and making suggestions that break everything.”
Source: builder.io/blog/cursor-vs-claude-code
Qodo Deep Comparison (November 2025)
Qodo’s senior engineer comparison noted practical differences:
“Claude Code’s context window is more reliable for large codebases, offering true 200k-token capacity ideal for CLI workflows, as Cursor’s token window can reduce the capacity for maintaining performance.”
On workflow fit: “Tools like Cursor are great for fast scaffolding, but once you’re working across shared libraries, layered services, or a monorepo, better autocomplete won’t save you.”
Source: qodo.ai/blog/claude-code-vs-cursor/
Recommendations
Choose Claude Code when:
- Using Anthropic models exclusively
- Have Claude Pro/Max subscription (native OAuth support)
- Have ChatGPT Plus/Pro subscription (native OAuth support)
- Need most mature hook system for Ralph-style loops
- Want official Anthropic support
- Using Cursor IDE (via official extension)
Choose Cursor when:
- Want turnkey autonomous execution (Background Agents)
- IDE-first workflow, minimal setup
- Multi-model flexibility within Cursor’s ecosystem
- Don’t need external subscription leverage
Choose Codex when:
- Have ChatGPT Plus/Pro subscription
- Committed to OpenAI ecosystem
- Want both CLI and cloud options
- Middle ground on control vs. convenience
Choose Kiro when:
- Want agent to learn over time (from code review)
- Need file-event hooks (fileSaved, fileCreated, fileDeleted)
- Work across multiple repositories
- Hybrid IDE + cloud approach
Choose OpenCode when:
- Have ChatGPT Plus/Pro or GitHub Copilot subscription
- Want provider flexibility (75+ providers, switch freely)
- Prefer open-source tooling
- Need sophisticated hooks + AGENTS.md compatibility
- Building GitHub Actions autonomous workflows
Choose GitHub Copilot when:
- Already paying for Copilot subscription
- Want deepest GitHub/IDE integration
- Need enterprise compliance and audit logs
- Prefer assigning issues directly to AI
- Multi-model access (Claude, GPT, Gemini) in one subscription
References
Official Documentation
- Claude Code: anthropic.com/engineering/claude-code-best-practices, code.claude.com/docs
- OpenCode: opencode.ai/docs, github.com/sst/opencode
- Cursor: docs.cursor.com
- GitHub Copilot: docs.github.com/copilot
- Codex: github.com/openai/codex
- Kiro: kiro.dev/docs
Practitioner Comparisons
- Render Engineering Benchmark: render.com/blog/ai-coding-agents-benchmark (August 2025)
- Builder.io Cursor vs Claude Code: builder.io/blog/cursor-vs-claude-code (September 2025)
- Qodo Deep Comparison: qodo.ai/blog/claude-code-vs-cursor (November 2025)
- Daniel Miessler OpenCode Analysis: danielmiessler.com/blog/opencode-vs-claude-code (July 2025)
- Matthew Groff Productivity: groff.dev/blog/claude-code-opencode-productivity-boost
Best Practices & Workflows
- Anthropic Engineering Blog: anthropic.com/engineering/claude-code-best-practices
- HumanLayer CLAUDE.md Guide: humanlayer.dev/blog/writing-a-good-claude-md
- Shrivu Shankar Feature Deep Dive: blog.sshh.io/p/how-i-use-every-claude-code-feature
- OpenCode Rules Documentation: opencode.ai/docs/rules
Research
- SWE-bench Results: swebench.com (benchmark comparisons)
- Arize CLAUDE.md Optimization: arize.com/blog/claude-md-best-practices-learned-from-optimizing-claude-code-with-prompt-learning
- AGENTS.md Spec: Linux Foundation Agentic AI Foundation