// Adds dimensions UUID, Author and Topic into GA4
Wednesday, September 23, 2026
29.8 C
Singapore

Ex-ISD boss breaks silence on Mas Selamat

Under his watch, Singapore’s worst security breach happened. Six years later, former ISD director Pang Kin Keong tells Challenge, a civil service magazine, what he and his officers went through. Excerpts:

“To have an incident of this national security magnitude happen under your leadership…that’s an awful feeling…I’ll be honest. When I read the newspapers or my email (I felt) like slumping and going back to bed, under the covers.

“This difficulty of keeping up the morale intensified over time…After eight, nine months, and we still have absolutely no trace of him, how do you keep on telling them (his staff),  ‘it’s okay. You need to keep plugging away.’

“I wanted at least to be able to say, yes, the mistake happened under me, but I rectified it under my watch as well.

“Loyalty is a two-way thing. You can’t expect your officers to be loyal to you unless you’re loyal to them…When they have that confidence in you, they’ll go to the ends of the world for you.”

Pang, 47, moved on to become permanent secretary of the Law Ministry in 2010 and the Ministry of Transport in 2012.

Hot this week

Elderly couple says cockroaches have been crawling out of HDB chute for 6 months, contractor still hesitant to fix it

An elderly couple says they are willing to pay to replace their faulty HDB garbage chute door, but the contractor they approached has hesitated to begin work over concerns about damaged tiles.

‘We don’t want to give them the bullet’: Why only one DAP minister resigned over the Najib pardon

DAP chief Anthony Loke has resigned as Malaysia's Transport Minister in protest over Najib Razak's conditional pardon, while the party's other ministers remain in Cabinet to prevent a political crisis

Popular Categories

document.addEventListener("DOMContentLoaded", () => { const trigger = document.getElementById("ads-trigger"); if ('IntersectionObserver' in window && trigger) { const observer = new IntersectionObserver((entries, observer) => { entries.forEach(entry => { if (entry.isIntersecting) { lazyLoader(); // You should define lazyLoader() elsewhere or inline here observer.unobserve(entry.target); // Run once } }); }, { rootMargin: '800px', threshold: 0.1 }); observer.observe(trigger); } else { // Fallback setTimeout(lazyLoader, 3000); } });
// //
Enable Notifications OK No thanks