목종 때 장작감(將作監)이라 불렀다. 관원으로 감(監) · 소감(少監) · 승(丞) · 주부(注簿)가 있었고, 문종 때 관제를 고쳐 판사(判事, 종3품) · 감(정4품) · 소감(종4품) 각 1인, 승(종6품) 2인, 주부(종7품) 2인을 두었다.
1298년(충렬왕 24)에 선공감으로 고쳐 판사를 없애고 감을 종3품으로 올렸다. 1308년(충선왕 복위년)에 또 선공사(繕工司)로 고쳐 영사(領事, 종2품) 1인, 영(令, 정3품) 3인, 부령(副令, 정4품) 3인, 승 2인, 주부(정7품) 2인을 두었다가 뒤에 다시 선공시(繕工寺)로 고쳤다. 1356년(공민왕 5)에 장작감, 1362년에 선공시, 1369년에 장작감, 1372년에 선공시로 여러 차례 이름이 바뀌었다.
조선 개국 이후 1392년 7월에 처음 선공감을 설치해 토목 · 영선 · 시탄(柴炭)을 지응(支應)하는 일 등을 맡았다. 관원으로 판사(判事, 정3품) 2인, 감(종3품) 2인, 소감(종4품) 2인, 승(종5품) 1인, 겸승(兼丞, 종5품) 1인, 주부(注簿, 종6품) 2인, 겸주부(종6품) 1인, 직장(直長, 종7품) 2인, 녹사(錄事, 정8품) 2인을 두었다.
1414년(태종 14) 1월에 감을 정(正)으로, 소감을 부정(副正)으로, 승을 판관(判官)으로 개정했고, 1460년(세조 6) 5월에 부정 1인과 직장 1인을 감원하였다. 1466년 1월에 관제를 크게 개정해 판사를 정으로, 정을 부정으로, 부정을 첨정(僉正)으로, 부녹사를 부봉사(副奉事)로 개칭하였다. 또 녹사 1인과 부녹사 1인을 폐지하고 참봉 1인을 증치해 『경국대전』에 성문화하였다.
『경국대전』에는 토목과 선공을 관장한다고 되어 있다. 제조(提調) 2인을 두는데, 판관(判官) 이상 1인은 장기 복무인 구임(久任)으로 하였다. 관원으로 정(정3품) 1인, 부정(종3품) 1인, 첨정(종4품) 1인, 판관(종5품) 1인, 주부(종6품) 1인, 직장(종7품) 1인, 봉사(종8품) 1인, 부봉사(정9품) 1인, 참봉(종9품) 1인이 있었다.
뒤에 『속대전』에서 정 · 첨정 · 판관 · 직장 · 참봉을 감원하고 봉사(奉事, 종8품) 1인, 감역관(監役官, 종9품) 3인, 가감역관(假監役官, 종9품) 3인을 증치하였다.