Un policier sous couverture, Chan Kam-wah, qui enquête sur un groupe de voleurs de bijoux, fait sauter sa couverture et est poignardé à mort par trois assaillants dans un marché de rue. Son supérieur, l’inspecteur Lau, ordonne à Ko Chow, un autre policier sous couverture, de reprendre l’enquête. Ko Chow accepte à contrecœur car lors de sa précédente mission d’infiltration, il avait dû arrêter une personne qui lui avait fait confiance en tant qu’ami.
Les braqueurs braquent une bijouterie, mais quelqu’un parvient à alerter la police. L’un des braqueurs, Fu, tue un policier, déclenchant une fusillade avec les policiers qui s’approchent. Le gang s’échappe de justesse. Le commissaire de police met en place une équipe spéciale pour enquêter sur le gang, sous la direction du jeune inspecteur John Chan. Une forte rivalité se développe entre Lau et Chan ; Chan considère Lau comme vieux jeu et dépassé, tandis que Lau considère Chan comme inexpérimenté et arrogant.
Pour atteindre le gang, Chow leur propose des armes à vendre par le biais de l’intermédiaire de Tai Song. Lors de la première rencontre avec le membre du gang Fu, ils sont suivis par des membres du département des enquêtes criminelles sous le commandement de Chan (qui ignore que Chow est un policier sous couverture). Après les funérailles de Chan Kam-wah, Chow rencontre Lau qui lui remet la clé d’un casier dans un bowling où les armes seront cachées. Chow déconseille de remettre de vraies armes, mais Lau insiste pour ne pas perdre la trace du gang.
Chow rencontre sa petite amie Hung, à qui il a fait une demande en mariage peu avant. Lorsque Chow lui demande de reporter le mariage jusqu’à ce que son affaire soit close, elle quitte la pièce hystériquement.
Avant la remise des armes, Chow enregistre un magnétophone autour de sa taille. Il rencontre trois des membres du gang. Chow est fouillé, mais parvient à les distraire du magnétophone. Fu est satisfait de l’échantillon d’arme et demande à Chow de le rencontrer à nouveau dans deux jours à midi pour acheter des armes et des munitions supplémentaires.
Le lendemain, Chow rencontre Lau et lui demande des armes supplémentaires. Lau a besoin de temps pour les obtenir, mais assure à Chow qu’il les déposera deux heures avant la remise prévue à Fu dans le bowling. Pendant ce temps, Hung fait ses valises pour prendre un vol vers le Canada avec Tso, un homme d’affaires plus âgé qui lui avait déjà proposé de quitter sa femme pour elle. Lorsque Chow l’apprend au téléphone, il lui demande de l’épouser immédiatement pour la faire changer d’avis. Hung lui dit de prouver qu’il est sincère en se présentant au bureau d’enregistrement à 10 heures le lendemain, mais le jour suivant, elle y attend en vain avec son amie Rose.
En se rendant au bowling, Chow est suivi par des policiers. Lorsqu’il s’en rend compte (et puisque posséder les armes est un crime), il appelle Lau. Ce dernier lui dit que les policiers font partie du département de Chan et lui ordonne de poursuivre son chemin pendant qu’il règle la situation avec Chan. Lorsqu’il parle à Chan, il mentionne que Chow est un informateur, mais garde secret son statut de policier sous couverture. Chan refuse la demande de Lau de mettre fin à la filature de Chow.
Désormais seul, Chow se débarrasse de ses poursuivants policiers à une station de MTR en montant dans un train en partance. En récupérant le sac avec les armes, il remarque Fu au bowling. Alors qu’il quitte le bâtiment, la police arrive. Chow parvient à s’échapper en sautant par une fenêtre et est récupéré au niveau de la rue par Fu qui s’approche en voiture. Ils se rendent à la cachette du gang, dont le chef veut rencontrer Chow. Il propose à Chow de participer à un grand braquage à venir.
Fu conduit Chow à l’aéroport où il rencontre Hung, qui est sur le point de prendre un avion pour le Canada avec Tso. Chow tente de lui faire changer d’avis, mais il est arrêté par la police pour vente d’armes (pendant que Hung monte dans l’avion). Au poste de police, Chow est battu et torturé par les hommes de Chan qui veulent connaître l’acheteur des armes. Le supérieur de Chan entre dans la pièce, ordonne aux hommes de Chan de libérer Chow et appelle Chan et Lau dans son bureau. Lau admet avoir donné les armes à Chow dans le cadre de la transaction, mais garde le silence sur le fait que Chow est un policier sous couverture. Comme la possession illégale d’une arme à feu est un délit mineur, Chan propose que Chow participe au hold-up pour prendre les voleurs en flagrant délit. Lau considère que c’est un trop grand risque, mais finalement le chef de la police ordonne la participation de Chow au braquage prévu.
Il y a quatre bijouteries possibles que le gang pourrait braquer. Toutes ont des mesures de sécurité faibles, des marchandises de valeur et sont situées sur des routes très fréquentées. Après le vol, le gang prévoit de se rendre en voiture dans une cachette dans la zone portuaire où un bateau viendra les chercher le lendemain. La police ne sait pas quel magasin sera visé, mais prévoit de garder plusieurs équipes de police en attente à proximité.
La veille du vol, le chef de gang ordonne aux participants de se rassembler dans un appartement. Pour des raisons de sécurité, ils doivent passer le temps restant avant le holdout ensemble et remettre leurs pagers. Chow écrit l’adresse de la cachette sur un bout de papier, mais ne peut la transmettre à ses collègues policiers. Chow et Fu partagent une chambre et parlent de leur histoire et de leurs projets d’avenir. La femme de Fu l’a quitté et il n’a jamais revu son fils, ce à quoi Chow répond que sa femme l’a également quitté et les deux hommes deviennent de plus en plus proches. Pendant la nuit, Chow lit une lettre de Hung qui lui dit qu’elle n’est pas partie au Canada avec Tso, mais qu’elle l’attend à Hawaï.
Le lendemain matin, le chef de la police ordonne aux équipes de police de sortir de la réserve car ils ne s’attendent plus à ce que le vol ait lieu bientôt. C’est une erreur d’appréciation, car le chef de gang réunit ses hommes et désigne la bijouterie de Tai Kong comme cible. Les équipes spéciales de la police s’étant retirées, le magasin n’est gardé que par deux policiers en civil dans une voiture de patrouille. Le hold-up commence lorsque quatre des voleurs entrent dans le magasin, sortent leurs armes et demandent les bijoux. Fu et Chow attendent à l’entrée pour surveiller la rue tandis que le chef du gang attend dans une voiture de fuite. C’est là que Chow réalise que c’est Fu que des témoins oculaires ont décrit comme le tueur de flics qui a déclenché la fusillade lors du casse de la bijouterie.
Lorsque l’alarme du magasin est déclenchée, Big Song (l’un des braqueurs) tire sur une vendeuse. Alors qu’ils tentent de s’échapper vers leurs voitures, les deux policiers qui gardent le magasin ouvrent le feu, blessant le membre du gang Bill. L’une des voitures en fuite est arrêtée par la police. Fu, Chow, Joe et Big Song doivent laisser Bill derrière eux sous un feu nourri. Joe est tué par la police tandis que Big Song tente de mettre le feu à une autre voiture en fuite. Dans une manœuvre audacieuse, Fu fait face à une voiture de police qui s’approche et tue les quatre policiers à l’intérieur, bien qu’il soit touché à l’épaule. Chow sauve la vie de Fu en tuant le policier qui lui a tiré dessus.
Fu, Chow, Big Song et Bony (le quatrième membre survivant du gang) s’échappent avec la voiture volée vers la cachette du port, où ils rencontrent le chef du gang qui les attendait déjà. Pendant ce temps, la police trouve la note de Chow avec l’adresse de la cachette sur les lieux de la fusillade.
Le chef soupçonne un traître parmi le gang puisque la police est arrivée trop rapidement sur les lieux du crime. Il incrimine Chow car il n’a rejoint leurs rangs que récemment. Big Song et Fu défendent Chow et une impasse mexicaine émerge.
La police arrive et encercle la cachette avec des dizaines d’hommes. Lorsque Chan demande aux hommes de se rendre, Big Song tire sur les policiers. Ceux-ci ouvrent le feu et le tuent. Bony tente de se rendre et est abattu par le chef du gang pour lâcheté. Lorsque le chef tente également de tirer sur Chow et Fu, ils le tuent à la place. Chow est blessé par une balle de la police et réalise que sa blessure est fatale. Il avoue à Fu qu’il est un flic et demande une mort rapide, mais Fu se sent incapable de tuer Chow. Alors que la police prend d’assaut la cachette et arrête Fu, Chow meurt à ses côtés. Lau, furieux de sa mort, écrase une brique sur la tête de Chan (qui est déjà en train de se vanter de son succès auprès d’un supérieur) et part en trombe.