Three signals, any one is enough · unmatched reads as human
login glob
*[bot]
nobracket, literal [bot]
head branch
claude/*
prefix glob
commit trailer
Co-Authored-By
final paragraph only
classifyAuthor
any match?
OR of the three
classify paths
class + tier → verdict
agentheld to stricter tier
humanthe lenient default
CI gates on the PR author login · the CLI reads the commit author name as an advisory pre-flight