Cách xóa Co-Authored-By Claude khỏi các commit Git của bạn

Claude Code ký tên vào commit của bạn bằng một trailer Co-Authored-By và vào pull request bằng một dòng Generated with Claude Code. Cài đặt để xóa chúng, file cần đặt cài đặt đó, và cách dọn sạch những commit bạn đã push.

Bạn nhờ Claude Code commit, và thông điệp kết thúc bằng một dòng bạn không hề viết: Co-Authored-By: Claude Opus 4.6 <[email protected]>. Mở một pull request với nó, và phần mô tả kết thúc bằng một emoji robot và "Generated with Claude Code". Cả hai đều không phải bug. Cả hai đến từ cùng một cài đặt, và bạn có thể đổi nó trong một phút.

Hướng dẫn này nói về cài đặt đó, file cần đặt nó vào để nó áp dụng cho riêng bạn, cho một dự án hay cho cả nhóm, khóa cũ đã lỗi thời mà có thể bạn vẫn còn, và cách dọn những commit đã mang dòng đó. Các thông tin về Claude Code lấy từ tài liệu tham chiếu cài đặt của nó, đọc ngày 12 tháng 11 năm 2026 với Claude Code 2.1.318 đã cài.

Câu trả lời ngắn. Đặt đoạn này vào ~/.claude/settings.json:

{
  "attribution": {
    "commit": "",
    "pr": ""
  }
}

Các commit mới không còn mang trailer, các pull request mới mất dòng đó. Các commit tạo trước khi thay đổi vẫn giữ nó cho đến khi bạn viết lại chúng.

Claude Code thêm gì, và thêm ở đâu

Claude Code thêm attribution ở ba nơi. Mỗi nơi có một khóa con riêng dưới attribution.

Ở đâuClaude Code thêm gì theo mặc địnhKhóa con
Thông điệp commitMột trailer: Co-Authored-By: <model> <[email protected]>attribution.commit
Mô tả pull requestMột emoji robot và "Generated with Claude Code"attribution.pr
Commit hoặc PR từ một phiên cloud hoặc Remote ControlLiên kết phiên claude.ai, dưới dạng trailer Claude-Session trên commitattribution.sessionUrl

Tên trong trailer là model đang dùng lúc tạo commit. Đó là lý do dòng này ghi Claude Opus 4.6 tuần này và Claude Sonnet 4.6 tuần sau, và vì sao các lượt tìm kiếm về vấn đề này nhắc đến nhiều model đến vậy. Khi Claude Code nhận ra một model Claude nhưng không xác nhận được phiên bản, nó chỉ ghi Claude. Khi model đằng sau một ANTHROPIC_BASE_URL tùy chỉnh hoàn toàn không phải model Claude, nó ghi Claude Code. Khi một subagent tạo commit, trailer ghi tên model của subagent đó.

Dòng này không phải là một git hook. Claude Code bảo Claude thêm nó khi chính Claude viết một commit hoặc một pull request. Một commit bạn tự tạo trong terminal, hoặc do một công cụ khác tạo, sẽ không bao giờ có nó.

Tắt nó bằng cài đặt attribution

attribution nhận một object gồm ba phần, hoặc false cho cả ba.

Giá trịTác dụng
"commit": ""Không có trailer trên commit
"pr": ""Không có dòng attribution trong mô tả pull request
"sessionUrl": falseKhông có liên kết phiên claude.ai trên commit và pull request tạo từ một phiên cloud hoặc Remote Control
"attribution": falseẨn cả ba cùng lúc. Cần Claude Code 2.1.281 trở lên

Dạng ngắn rất hấp dẫn, nhưng hãy đọc dòng về phiên bản trước. Một Claude Code cũ hơn 2.1.281 sẽ từ chối "attribution": false, và nó không chỉ bỏ qua khóa đó: nó bỏ qua toàn bộ file cài đặt chứa khóa, cùng với quyền, hook và model của bạn. Nếu cùng một file được đọc trên những máy có phiên bản khác nhau, hãy dùng dạng dài:

{
  "attribution": {
    "commit": "",
    "pr": "",
    "sessionUrl": false
  }
}

Chạy /status để kiểm tra file đã được nạp: dòng Setting sources liệt kê mọi file Claude Code đã đọc. Nếu một phiên đã mở từ trước vẫn tiếp tục thêm dòng đó, hãy bắt đầu một phiên mới.

File nào: riêng bạn, một dự án, hay cả nhóm

Khóa này hoạt động trong mọi file cài đặt. Chính file quyết định nó áp dụng cho ai.

FileÁp dụng cho ai
~/.claude/settings.jsonBạn, trong mọi dự án trên máy này
.claude/settings.json trong dự ánMọi người làm việc trong dự án, khi bạn đã commit file
.claude/settings.local.json trong dự ánBạn, chỉ trong dự án này. Claude Code giữ nó ngoài git khi tạo ra nó
Managed settings do tổ chức của bạn triển khaiMọi người mà tổ chức triển khai tới

Khi hai file cùng đặt khóa này, file ở cấp cao hơn thắng: managed settings, rồi --settings trên dòng lệnh, rồi file local của dự án, rồi file dùng chung của dự án, rồi file người dùng của bạn. Từ thứ tự đó có hai trường hợp. Nếu nhóm của bạn commit một file cố ý giữ trailer, file .claude/settings.local.json của riêng bạn sẽ ghi đè nó cho bạn mà không thay đổi gì với người khác. Nếu tổ chức của bạn đặt attribution trong managed settings, không gì bạn viết có thể thay đổi nó.

Bạn cũng có thể dặn Claude trong CLAUDE.md đừng thêm dòng đó, và Claude Code cho Claude biết rằng chỉ dẫn của chính bạn về attribution được ưu tiên hơn các dòng mặc định của nó, trừ khi dòng đó đến từ managed settings. Khác biệt nằm ở bản chất: cài đặt xóa đoạn văn bản mà Claude Code yêu cầu, còn chỉ dẫn là thứ model đọc rồi áp dụng. Hãy dùng cài đặt.

Khóa cũ includeCoAuthoredBy

Trước attribution, công tắc này là includeCoAuthoredBy. Nó đã bị đánh dấu lỗi thời từ Claude Code 2.0.62 nhưng vẫn được đọc:

  • "includeCoAuthoredBy": false ẩn cả trailer của commit lẫn dòng của pull request;
  • ngay khi attribution.commit hoặc attribution.pr được đặt, Claude Code bỏ qua includeCoAuthoredBy và dùng văn bản mặc định của nó cho phần nào trong hai phần mà bạn chưa đặt.

Quy tắc thứ hai đó là lý do thường gặp khiến trailer quay lại. Bạn đã có includeCoAuthoredBy: false, rồi thêm "attribution": {"pr": ""} để chỉ xóa dòng PR, và trailer của commit xuất hiện trở lại vì giờ attribution quyết định và commit chưa được đặt. Hãy chuyển sang attribution và đặt cả hai phần.

Thay thế thay vì xóa

Một số nhóm muốn giữ dấu vết những commit nào có AI hỗ trợ, chỉ là không phải bằng dòng đó. attribution.commit nhận bất kỳ văn bản nào, kể cả trailer. Git chỉ đọc trailer ở đoạn cuối cùng của thông điệp, nên hãy đặt chúng cùng nhau ở cuối:

{
  "attribution": {
    "commit": "Assisted-by: Claude Code"
  }
}

Commit đoạn đó vào .claude/settings.json của dự án, và Claude Code của mọi thành viên trong nhóm sẽ ghi cùng một dòng.

Những commit đã có trailer

Cài đặt chỉ thay đổi các commit được viết sau nó. Với những commit đã có sẵn, công cụ phù hợp tùy vào việc chúng đã đi xa đến đâu.

Commit cuối cùng, chưa push: amend nó và xóa dòng đó trong trình soạn thảo.

git commit --amend

Nhiều commit trên một nhánh bạn chưa chia sẻ: rebase và sửa lại thông điệp từng commit.

git rebase -i origin/main

Cả một lịch sử: git filter-repo viết lại mọi thông điệp commit trong một lượt. Nó cần một bản clone mới, và là một công cụ riêng phải cài thêm:

git filter-repo --message-callback '
return re.sub(rb"(?mi)^Co-Authored-By: Claude[^\n]*<noreply@anthropic\.com>\n?", b"", message).rstrip(b"\n") + b"\n"
'

Viết lại có cái giá của nó, và trên một nhánh dùng chung, cái giá đó thường cao hơn chính dòng kia. Hash của mọi commit kể từ commit đầu tiên bị sửa đều là mới, nên một nhánh đã push cần force push, mọi cộng tác viên phải bắt đầu lại từ lịch sử mới, các pull request đang mở dựa trên commit cũ sẽ hỏng, và các commit đã ký sẽ mất chữ ký. Trên một nhánh cá nhân trước khi merge, cứ làm. Trên một nhánh main mà người khác đã pull, hãy để nguyên và đặt khóa cho những gì đến sau.

Trailer làm gì trên GitHub

GitHub đọc các trailer Co-authored-by và hiển thị đồng tác giả trên commit khi địa chỉ email thuộc về một tài khoản GitHub. Vào tháng 6 năm 2025, hai issue trên repository anthropics/claude-code (#1653 và #1655) báo cáo các commit bị gán, qua địa chỉ đó, cho một tài khoản GitHub không liên quan gì đến Anthropic; cả hai đều đã đóng. Dù vào một ngày nào đó địa chỉ này trỏ tới tài khoản nào, việc xóa trailer sẽ xóa đồng tác giả khỏi các commit sau đó, và chỉ khỏi những commit đó.

Các CLI khác làm gì

Claude Code không phải là công cụ duy nhất ký tên vào công việc của mình, và mỗi CLI có công tắc riêng.

  • Codex. Trong mã nguồn openai/codex mà chúng tôi đọc ngày 12 tháng 11 năm 2026, Codex thêm Co-authored-by: Codex <[email protected]> vào commit và "Generated with Codex." vào nội dung pull request khi attribution được bật cho workspace của bạn, một chính sách nó tải về khi một phiên bắt đầu. Khi chính sách tắt, Codex được dặn không thêm dòng nào cả.
  • Aider. Nó nối thêm "(aider)" vào tên author và committer của git thay vì thêm trailer. --no-attribute-author và --no-attribute-committer tắt hành vi đó, còn --attribute-co-authored-by chuyển sang dùng một trailer Co-authored-by.

Chúng tôi làm gì trong AgentsRoom

Mỗi ngày chúng tôi chạy nhiều agent trên cùng các repo, Claude Code bên cạnh Codex và các công cụ khác, và commit là nơi công việc của chúng gặp nhau. Có hai trường hợp, và chúng không theo cùng một quy tắc.

Khi một agent tự commit trong terminal của nó, CLI của nó viết thông điệp, nên cài đặt của chính CLI đó được áp dụng: attribution với Claude Code, chính sách workspace với Codex, các cờ với Aider.

Khi bạn commit từ AgentsRoom, từ tab Changes, chế độ rà soát, tính năng tự động commit khi một agent đóng lại hoặc màn hình Changes của ứng dụng điện thoại, AgentsRoom viết commit và không CLI nào thêm trailer của mình. Thứ nằm ở cuối là chữ ký commit của AgentsRoom, và bạn là người quyết định nó. Theo mặc định, nó thêm một dòng với vai trò của từng agent có file trong commit và thời gian agent đó đã bỏ ra:

bug : Fix the login redirect

AgentsRoom-Agent: fullstack; time=42m

Mỗi phần là một công tắc riêng trong Cài đặt > Git > Chữ ký commit, cho tài khoản của bạn, một thư mục dự án hoặc một dự án duy nhất: vai trò của agent, thời gian đã bỏ ra, và, tắt theo mặc định, chi phí, phần hạn mức đã dùng và các prompt bạn đã gõ. Tắt Agent và Thời gian, và commit của bạn giống hệt như trước. Chúng tôi giữ vai trò trong các repo của mình: trên một repo có bốn CLI cùng commit, tên model cho biết model nào đã viết code, còn vai trò cho biết nó đang làm việc gì, đó là điều chúng tôi tìm khi một thay đổi làm hỏng thứ gì đó ba tuần sau. Changelog công khai của chúng tôi đọc cùng dòng này để cho biết agent nào đã làm việc trên mỗi bản phát hành.

Nếu bạn cũng muốn lập luận đằng sau một thay đổi, Commit Context thêm một liên kết tới cuộc trò chuyện của agent trong cùng khối trailer. Và khi bạn không muốn tự viết thông điệp chút nào, AI Commit Messages soạn nó từ diff.

Câu hỏi thường gặp

Làm sao xóa Co-Authored-By Claude khỏi commit của tôi?

Thêm "attribution": {"commit": "", "pr": ""} vào ~/.claude/settings.json. Khi đó Claude Code ngừng thêm trailer Co-Authored-By vào các commit nó viết và dòng Generated with Claude Code vào các pull request nó mở, trong mọi dự án trên máy đó. Với Claude Code 2.1.281 trở lên, "attribution": false ẩn tất cả chỉ bằng một giá trị. Các commit tạo trước khi thay đổi vẫn giữ trailer của chúng.

includeCoAuthoredBy còn hoạt động không?

Vẫn hoạt động, nhưng đã bị đánh dấu lỗi thời từ Claude Code 2.0.62. includeCoAuthoredBy: false ẩn cả trailer của commit lẫn dòng của pull request, trừ khi khóa attribution mới hơn đặt commit hoặc pr, khi đó attribution thắng. Cấu hình mới nên dùng attribution.

Tại sao trailer ghi Claude Opus 4.6 hoặc Sonnet 4.6 thay vì Claude?

Trailer ghi tên model đang dùng lúc tạo commit, nên nó thay đổi theo model của bạn. Claude Code chỉ ghi Claude khi không xác nhận được phiên bản chính xác, và ghi Claude Code khi model đằng sau một ANTHROPIC_BASE_URL tùy chỉnh không phải là model Claude. Cài đặt này xóa tất cả các biến thể đó.

Làm sao xóa trailer khỏi những commit tôi đã tạo?

Với commit cuối cùng, chạy git commit --amend và xóa dòng đó. Với nhiều commit chưa push, dùng git rebase -i và sửa lại thông điệp từng commit. Với cả một lịch sử, git filter-repo cùng một message callback sẽ xóa dòng đó khỏi mọi commit, trên một bản clone mới. Việc viết lại làm thay đổi hash của mọi commit kể từ commit đầu tiên bị sửa, nên lịch sử đã push cần force push và mọi cộng tác viên phải bắt đầu lại từ lịch sử mới.

Công ty tôi có thể buộc bật lại attribution không?

Có. Managed settings do một tổ chức triển khai nằm trên mọi file bạn kiểm soát, nên một giá trị attribution đặt ở đó sẽ thắng các cài đặt người dùng, dự án và local của bạn. Chạy /status trong Claude Code: dòng Setting sources cho biết có nguồn managed nào áp dụng cho bạn hay không.

Xóa trailer có che giấu việc tôi đã dùng AI không?

Nó xóa một dòng khỏi thông điệp commit, không gì khác. Chính Claude Code cung cấp cài đặt này và tài liệu của nó không yêu cầu bạn giữ dòng đó. Tuy vậy, một số dự án và nhà tuyển dụng có yêu cầu người đóng góp công khai việc được AI hỗ trợ, nên hãy đọc quy định của repo bạn push lên trước khi tắt nó ở đó.

Kỹ Sư DevOpsNgười Viết Nội DungNhà Phát Triển FrontendNhân Viên Kinh DoanhNhà Phát Triển BackendHuấn Luyện Viên & Đào TạoKiến Trúc Sư Phần MềmChuyên Viên Pháp ChếKỹ Sư QATài Chính & Hành ChínhNhà Phát Triển Full-StackNhà Thiết Kế Sáng TạoNhà Phát Triển Di ĐộngNhà Nghiên CứuKỹ Sư Bảo MậtNhân Sự & Tuyển Dụng
Quản Lý Dự ÁnBiên Dịch ViênChuyên Gia GitChuyên Viên Phân Tích Dữ LiệuChuyên Gia SEOKế ToánChuyên Gia Địa Phương HóaTruyền Thông & PRNgười Đưa Ra Ý TưởngVận Hành & LogisticsChuyên Gia Tiếp ThịChăm Sóc Khách HàngTrợ lý dự ánNhân Viên Mua HàngQuản Lý Cộng ĐồngTrợ Lý Cá Nhân

Tải AgentsRoom

Chạy tất cả agent AI của bạn, trên mọi dự án, trong một cửa sổ duy nhất.

Tải AgentsRoomMiễn phí

Ứng dụng đồng hành: theo dõi agent khi đi đường

Sử dụng Claude, Codex, Antigravity CLI hoặc nhà cung cấp AI khác.

Tải tiện ích mở rộng
Chrome Web Store

Gửi lỗi và yêu cầu thẳng vào backlog công khai của bạn.

Đọc agent như một cuộc trò chuyện

Mỗi agent có vai trò, khuôn mặt và một luồng tin nhắn bạn đọc như ứng dụng nhắn tin.

Giao diện hội thoại

Giao diện hội thoại AgentsRoom: công việc của một AI coding agent hiển thị như một luồng trò chuyện
Nhiều dự án
Đa nhà cung cấp
Nhiều agent
Trạng thái trực tiếp
File diff & commit
Ứng dụng đồng hành mobile
Xem trước trực tiếp
Đội agent
Tự động hóa trình duyệt
Dev theo backlog
Thư viện prompt
Thư viện skill
Xem tất cả tính năng

Đọc thêm