Running back James Cook and the Bills have reached agreement on a four-year, $48 million contract extension that includes $30 million guaranteed, his agents told ESPN.