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.
| Ở đâu | Claude Code thêm gì theo mặc định | Khóa con |
|---|---|---|
| Thông điệp commit | Một trailer: Co-Authored-By: <model> <[email protected]> | attribution.commit |
| Mô tả pull request | Một emoji robot và "Generated with Claude Code" | attribution.pr |
| Commit hoặc PR từ một phiên cloud hoặc Remote Control | Liên kết phiên claude.ai, dưới dạng trailer Claude-Session trên commit | attribution.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": false | Khô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.json | Bạn, trong mọi dự án trên máy này |
.claude/settings.json trong dự án | Mọi người làm việc trong dự án, khi bạn đã commit file |
.claude/settings.local.json trong dự án | Bạ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 khai | Mọ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.commithoặcattribution.prđược đặt, Claude Code bỏ quaincludeCoAuthoredByvà 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/codexmà chúng tôi đọc ngày 12 tháng 11 năm 2026, Codex thêmCo-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-authorvà--no-attribute-committertắt hành vi đó, còn--attribute-co-authored-bychuyển sang dùng một trailerCo-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ó ở đó.
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.
Ứ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.
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.

Đọc thêm
Mod của Claude Code: chúng là gì, và mod chúng tôi cài sẵn cho mọi agent
Mod là một plugin có JavaScript chạy bên trong Claude Code. Nó làm được gì, ba tệp của nó, cách nạp và kiểm thử một mod, và mod chúng tôi cài sẵn trong mọi agent.
Đọc bài viếtCách Đưa Một Bí Mật Cho AI Coding Agent Mà Không Bỏ Nó Vào Prompt
Một agent cần khóa Stripe hay mật khẩu cơ sở dữ liệu để chạy lệnh của nó. Bạn dán giá trị đó vào khung chat và nó rơi vào tệp transcript trên đĩa, sang phía nhà cung cấp mô hình, đôi khi vào cả một commit. Quy tắc chúng tôi rút ra sau ba lần tự mình làm hỏng : một bí mật đến được agent qua biến môi trường, và không qua đường nào khác.
Đọc bài viếtAI nào code tốt nhất? Những gì 1.200 lập trình viên thực sự khởi chạy
205.366 lượt khởi chạy agent trong 28 ngày: Opus đứng đầu, GPT-6.1 Sol thứ hai, và một nửa số tài khoản dùng một mô hình mà chúng tôi gợi ý mặc định. Những gì các con số chứng minh được, và những gì chúng không thể nói.
Đọc bài viết