Зависит от того, что мы называем градиентом, если само "скалярное действие", т.е. производную по направлению в сторону df(p), то да это ковектор, если градиентом назвать просто вектор df(p), то это вектор.
Вон в школе люди считают градиент и это у них вектор, а не действие. Имхо спор об определениях.