why is công an not accepted here
Công an is a little different and normally means a public security officer while cảnh sát is a policeman.
Why is it accepted for "special police"?
cong an should be accepted. its the word used in the south. it does NOT mean security officer even in the south.
After 1975 the word replaced cảnh sát for civil policemen but cảnh sát itself can still mean police as in cảnh sát giao thông (traffic police) a.k.a people who like to extort money from innocent drivers.
Ahh, I get it. 警察/公安