1747년(영조 23)에 진사(進士)가 되고, 1754년에 세자 세마(洗馬)가 되었다. 이후 공조좌랑, 용궁현감(龍宮縣監) 등을 거쳐 1762년에 호서어사(湖西御史), 1764년에 전주판관(全州判官)이 되었다. 1765년에 구일제(九日製)에서 2등으로 직부전시(直赴殿試)의 상을 받아서 이듬해인 1766년에 정시(庭試) 문과에 급제하였다. 나이 41세였다.
1766년에 정언(正言), 교리(校理), 1767년에 겸문학(兼文學), 응교(應敎), 검상(檢詳), 1768년에 응교, 헌납(獻納), 1769년에 보덕(輔德), 1770년에 교리, 수찬, 문학, 부교리가 되었다. 이처럼 문과에 급제한 뒤로는 사간원과 사헌부 등에서 근무하면서 언관의 활동에 주력하였고, 그 결과 번번히 삭직(削職)되거나 향리로 쫓겨나기도 하였다.
1771년에 수원부사로 나가서 환곡 관련 사무를 잘 처리한 일로 숙마(熟馬) 1필(匹)을 하사받았다. 1774년에 병조참의를 지냈으며, 1776년(정조 즉위년) 안동부사로 부임해서는 정조로부터 민정을 잘 살폈다는 칭찬을 받았다.
천성이 호방하고 문학과 술과 산수를 즐겼다고 한다. 1767년에 이유수(李惟秀)의 동원(東園)에서 열린 시회(詩會)인 동원아집(東園雅集)의 일원이 되어서 동원십삼학사(東園十三學士)로 활동하였다. 벗 김종수(金鍾秀)가 지은 묘갈명인 「김백우묘갈명(金伯愚墓碣銘)」이 『몽오집(夢梧集)』에 실려있다.