diff --git a/claudetool/pre-commit.go b/claudetool/pre-commit.go
index d5b5891..eaea6ca 100644
--- a/claudetool/pre-commit.go
+++ b/claudetool/pre-commit.go
@@ -32,7 +32,9 @@
 	cmd.Dir = repoRoot
 	out, err := cmd.CombinedOutput()
 	if err == nil {
-		fmt.Fprintf(buf, "<commit_message_style_examples>%s</commit_message_style_examples>\n\n", out)
+		// Filter out git trailers from examples
+		cleanedExamples := filterGitTrailers(string(out))
+		fmt.Fprintf(buf, "<commit_message_style_examples>%s</commit_message_style_examples>\n\n", cleanedExamples)
 	} else {
 		slog.DebugContext(ctx, "failed to get commit messages", "shas", commitSHAs, "out", string(out), "err", err)
 	}
@@ -68,7 +70,8 @@
 - Special notations or tags
 - Capitalization and punctuation
 
-Ignore Change-ID and Co-authored-by lines in your analysis.
+Do NOT mention in any way Change-ID or Co-authored-by git trailer lines in your analysis, not even their existence.
+Those are added automatically by git hooks; they are NOT part of the commit message style.
 
 First, provide a concise analysis of the predominant patterns.
 Then select up to 3 commit hashes that best exemplify the repository's commit style.
@@ -103,6 +106,20 @@
 	return result, analysis, nil
 }
 
+// filterGitTrailers removes git trailers (Co-authored-by, Change-ID) from commit message examples
+func filterGitTrailers(input string) string {
+	buf := new(strings.Builder)
+	for line := range strings.Lines(input) {
+		lowerLine := strings.ToLower(line)
+		if strings.HasPrefix(lowerLine, "co-authored-by:") || strings.HasPrefix(lowerLine, "change-id:") {
+			continue
+		}
+		buf.WriteString(line)
+	}
+
+	return buf.String()
+}
+
 // isHexString reports whether a string only contains hexadecimal characters
 func isHexString(s string) bool {
 	for _, c := range s {
diff --git a/claudetool/pre-commit_test.go b/claudetool/pre-commit_test.go
new file mode 100644
index 0000000..a8bcb0e
--- /dev/null
+++ b/claudetool/pre-commit_test.go
@@ -0,0 +1,109 @@
+package claudetool
+
+import (
+	"testing"
+)
+
+func TestFilterGitTrailers(t *testing.T) {
+	tests := []struct {
+		name     string
+		input    string
+		expected string
+	}{
+		{
+			name: "filters Co-authored-by",
+			input: `<commit_message_style_example>
+fix: update component
+
+Some description.
+
+Co-authored-by: user@example.com
+</commit_message_style_example>`,
+			expected: `<commit_message_style_example>
+fix: update component
+
+Some description.
+
+</commit_message_style_example>`,
+		},
+		{
+			name: "filters Co-Authored-By",
+			input: `<commit_message_style_example>
+feat: add feature
+
+Co-Authored-By: another@example.com
+</commit_message_style_example>`,
+			expected: `<commit_message_style_example>
+feat: add feature
+
+</commit_message_style_example>`,
+		},
+		{
+			name: "filters Change-ID",
+			input: `<commit_message_style_example>
+docs: update README
+
+Change-ID: I123456789
+</commit_message_style_example>`,
+			expected: `<commit_message_style_example>
+docs: update README
+
+</commit_message_style_example>`,
+		},
+		{
+			name: "filters Change-Id",
+			input: `<commit_message_style_example>
+style: format code
+
+Change-Id: sc987654321
+</commit_message_style_example>`,
+			expected: `<commit_message_style_example>
+style: format code
+
+</commit_message_style_example>`,
+		},
+		{
+			name: "preserves other content",
+			input: `<commit_message_style_example>
+fix: resolve issue
+
+Some detailed explanation.
+With multiple lines.
+</commit_message_style_example>`,
+			expected: `<commit_message_style_example>
+fix: resolve issue
+
+Some detailed explanation.
+With multiple lines.
+</commit_message_style_example>`,
+		},
+		{
+			name: "filters multiple trailers",
+			input: `<commit_message_style_example>
+feat: new feature
+
+Detailed description.
+
+Co-authored-by: user1@example.com
+Co-Authored-By: user2@example.com
+Change-ID: I123
+Change-Id: sc456
+</commit_message_style_example>`,
+			expected: `<commit_message_style_example>
+feat: new feature
+
+Detailed description.
+
+</commit_message_style_example>`,
+		},
+	}
+
+	for _, tt := range tests {
+		t.Run(tt.name, func(t *testing.T) {
+			result := filterGitTrailers(tt.input)
+			if result != tt.expected {
+				t.Errorf("filterGitTrailers() = %q, want %q", result, tt.expected)
+			}
+		})
+	}
+}
