diff --git a/claudetool/codereview/codereview.go b/claudetool/codereview/codereview.go
index 2745957..5d10d79 100644
--- a/claudetool/codereview/codereview.go
+++ b/claudetool/codereview/codereview.go
@@ -21,19 +21,12 @@
 	initialStatus   []fileStatus // git status of files at initial commit, absolute paths
 	reviewed        []string     // history of all commits which have been reviewed
 	initialWorktree string       // git worktree at initial commit, absolute path
-	llmReview       bool         // enables a subagent LLM review
 }
 
-const (
-	NoLLMReview = false
-	DoLLMReview = true
-)
-
-func NewCodeReviewer(ctx context.Context, repoRoot, sketchBaseRef string, llmReview bool) (*CodeReviewer, error) {
+func NewCodeReviewer(ctx context.Context, repoRoot, sketchBaseRef string) (*CodeReviewer, error) {
 	r := &CodeReviewer{
 		repoRoot:      repoRoot,
 		sketchBaseRef: sketchBaseRef,
-		llmReview:     llmReview,
 	}
 	if r.repoRoot == "" {
 		return nil, fmt.Errorf("NewCodeReviewer: repoRoot must be non-empty")
diff --git a/claudetool/codereview/codereview_test.go b/claudetool/codereview/codereview_test.go
index 4872168..3b04898 100644
--- a/claudetool/codereview/codereview_test.go
+++ b/claudetool/codereview/codereview_test.go
@@ -234,7 +234,7 @@
 
 	// Create a code reviewer for the repository
 	ctx := context.Background()
-	reviewer, err := NewCodeReviewer(ctx, dir, initialCommit, NoLLMReview)
+	reviewer, err := NewCodeReviewer(ctx, dir, initialCommit)
 	if err != nil {
 		return "", fmt.Errorf("error creating code reviewer: %w", err)
 	}
@@ -272,7 +272,7 @@
 		return nil, fmt.Errorf("initial commit not set, cannot run autoformat")
 	}
 	ctx := context.Background()
-	reviewer, err := NewCodeReviewer(ctx, dir, initialCommit, NoLLMReview)
+	reviewer, err := NewCodeReviewer(ctx, dir, initialCommit)
 	if err != nil {
 		return nil, fmt.Errorf("error creating code reviewer: %w", err)
 	}
diff --git a/claudetool/codereview/differential.go b/claudetool/codereview/differential.go
index 44c0ecb..a4510b8 100644
--- a/claudetool/codereview/differential.go
+++ b/claudetool/codereview/differential.go
@@ -116,17 +116,6 @@
 		errorMessages = append(errorMessages, goplsMsg)
 	}
 
-	if r.llmReview {
-		llmComments, err := r.doLLMReview(ctx)
-		if err != nil {
-			// Log the error but don't fail the codereview if this check fails
-			slog.WarnContext(ctx, "CodeReviewer.Run: error doing LLM review", "err", err)
-		}
-		if llmComments != "" {
-			infoMessages = append(infoMessages, llmComments)
-		}
-	}
-
 	// NOTE: If you change this output format, update the corresponding UI parsing in:
 	// webui/src/web-components/sketch-tool-card.ts (SketchToolCardCodeReview.getStatusIcon)
 	buf := new(strings.Builder)
diff --git a/claudetool/codereview/llm_codereview_prompt.txt b/claudetool/codereview/llm_codereview_prompt.txt
deleted file mode 100644
index 321b812..0000000
--- a/claudetool/codereview/llm_codereview_prompt.txt
+++ /dev/null
@@ -1,89 +0,0 @@
-You are a code review assistant focused on identifying very specific issues.
-You analyze diffs and provide clear identification of problematic patterns.
-
-<issues>
-<issue>
-<name>Historical Comments</name>
-<description>
-Comments that describe past implementations or change history rather than explaining the current code's rationale or behavior. These are often more appropriate for commit messages than inline code comments. This also includes meta-comments that are only relevant to the current code review and wouldn't be useful to future code readers.
-</description>
-
-<identification_criteria>
-- References to past implementations (e.g., "The code used to do X", "Previously, we did Y")
-- Change history information (e.g., "This has changed", "This was modified", "Added support for")
-- Completed TODOs transformed into statements (e.g., "Implemented X", "Fixed Y")
-- Time-bound references (e.g., "As of May 2023", "In the new version")
-- Comments that won't make sense to future readers without knowledge of this specific change
-- Justifications meant only for reviewers (e.g., "Keeping as...", "Left this as...", "Moved this because...")
-- Comments explaining why something wasn't changed or was kept the same
-- Notes about implementation decisions that are only relevant during code review
-- Comments that reference the review process itself
-</identification_criteria>
-
-<exceptions>
-- Comments that explain why a particular approach was chosen over alternatives based on historical lessons
-- Comments that warn against specific approaches due to past failures
-- Comments that provide important context for why something unusual is necessary
-
-These exceptions must be written in a way that remains clear and useful to future readers without knowledge of the specific change history and should focus on the "why" behind decisions, not just documenting that a decision was made.
-</exceptions>
-
-<scope>ONLY newly added or modified comments in the diff. Do not flag existing comments or non-comment code changes.</scope>
-
-<examples>
-<example_input flag="true">
-- TODO: thread context through from caller
-+ Threaded context through from caller.
-</example_input>
-<example_output>
-Historical comment: This comment only documents that a change was made, not why it matters. Consider moving to commit message.
-File: filepath/filename.ext
-Line: + Threaded context through from caller.
-</example_output>
-
-<example_input flag="true">
-+ // We now use the new API for this operation
-</example_input>
-<example_output>
-Historical comment: References a change without explaining why it matters to current code readers. Consider moving to commit message.
-File: filepath/filename.ext
-Line: + // We now use the new API for this operation
-</example_output>
-
-<example_input flag="true">
-+	ReadWriteTx    TransactionType = "rw" // Keeping as string literal as this is a different type
-</example_input>
-<example_output>
-Historical comment: This comment is only relevant to the current code change. Consider moving to commit message or PR description.
-File: tx/tx.go
-Line: +	ReadWriteTx    TransactionType = "rw" // Keeping as string literal as this is a different type
-</example_output>
-
-<example_input flag="false">
-+ // It is tempting to short-circuit here.
-+ // However, in the past, that has created thundering herds and metastable failures,
-+ // so just do all the work every time.
-</example_input>
-<example_output>
-</example_output>
-</examples>
-</issue>
-
-</issues>
-
-Output format:
-For each identified issue:
-1. State the issue type directly
-2. Provide a clear explanation of the problem
-3. Include the file path and line numbers
-4. Quote the exact text if line numbers are unavailable
-5. If completely confident you MAY include a recommended solution with example code
-6. MUST include any important caveats or notes about the replacement
-
-Do not use phrases like "For each occurrence" or other meta descriptions.
-List each instance separately if multiple exist.
-If no issues are found, output only:
-
-```
-No comments.
-```
diff --git a/claudetool/codereview/llm_review.go b/claudetool/codereview/llm_review.go
deleted file mode 100644
index df8af9b..0000000
--- a/claudetool/codereview/llm_review.go
+++ /dev/null
@@ -1,52 +0,0 @@
-package codereview
-
-import (
-	"context"
-	_ "embed"
-	"fmt"
-	"os/exec"
-	"strings"
-
-	"sketch.dev/llm"
-	"sketch.dev/llm/conversation"
-)
-
-//go:embed llm_codereview_prompt.txt
-var llmCodereviewPrompt string
-
-// doLLMReview analyzes the diff using an LLM subagent.
-func (r *CodeReviewer) doLLMReview(ctx context.Context) (string, error) {
-	// Get the full diff between initial commit and HEAD
-	cmd := exec.CommandContext(ctx, "git", "diff", r.sketchBaseRef, "HEAD")
-	cmd.Dir = r.repoRoot
-	out, err := cmd.CombinedOutput()
-	if err != nil {
-		return "", fmt.Errorf("failed to get diff: %w\n%s", err, out)
-	}
-
-	// If no diff, nothing to check
-	if len(out) == 0 {
-		return "", nil
-	}
-
-	info := conversation.ToolCallInfoFromContext(ctx)
-	convo := info.Convo.SubConvo()
-	convo.PromptCaching = false
-	convo.Hidden = true
-	convo.SystemPrompt = strings.TrimSpace(llmCodereviewPrompt)
-	initialMessage := llm.UserStringMessage("<diff>\n" + string(out) + "\n</diff>")
-
-	resp, err := convo.SendMessage(initialMessage)
-	if err != nil {
-		return "", fmt.Errorf("failed to send LLM codereview message: %w", err)
-	}
-	if len(resp.Content) != 1 {
-		return "", fmt.Errorf("unexpected number of content blocks in LLM codereview response: %d", len(resp.Content))
-	}
-
-	response := resp.Content[0].Text
-	if strings.TrimSpace(response) == "No comments." {
-		return "", nil
-	}
-	return response, nil
-}
