고공사(考功司)는 관료에 대한 인사를 담당한 상서이부(尙書吏部)가 세부 업무를 담당하기 위해 그 속사로 설치한 관서이다.
각 관서로부터 소속 관원의 근무 평가서인 도력장(都歷狀)을 제출받아 해당 관원의 재능과 능력, 근무 성과에 따른 공로와 과실 등을 평가하여 관원 개인의 고과를 매겼다.
국초에는 사적(司績)이라고 칭하였다가 995년(성종 14) 상서고공(尙書考功)으로 고쳤다.
관직으로는 문종 때 정5품의 낭중(郎中) 2인, 정6품의 원외랑(員外郎) 2인을 두었다가, 1275년(충렬왕 1)에 낭중을 정랑(正郎), 원외랑을 좌랑(佐郎)으로 고쳤으며, 1298년(충선왕 1) 충선왕이 전조(銓曹)에 병합하였다.
1356년(공민왕 5) 다시 고공사를 설치하여 낭중, 원외랑을 두었다가 1362년(공민왕 11) 정랑, 좌랑으로 개칭하였다. 1369년(공민왕 18) 직랑(直郎), 산랑(散郎)으로 고쳤으며, 1372년(공민왕 21) 다시 정랑, 좌랑으로 개칭하였다.
이속(吏屬)으로는 문종 때 주사(主事) 2인, 영사(令史) 4인, 서령사(書令史) 4인, 계사(計史) 1인, 기관(記官) 2인, 산사(算士) 1인을 두었다.
1344년(충목왕 즉위년) 이제현(李齊賢)이 상소문에서 “ 정방(政房)의 명칭은 권신(權臣)들의 세대에 생긴 것이지 옛 제도는 아닙니다. 마땅히 정방제도를 혁신하여 이것을 전리(典理)와 군부(軍簿)에 귀속시키고 고공사를 설치하여 그 공과를 평정하며 …”라고 한 것으로 보아, 최우(崔瑀)가 정방을 설치한 뒤로는 고공사의 기능이 거의 유명무실해졌다가 공민왕 이후에야 되살아났음을 알 수 있다.