Daryll Deever (William Hurt) is the night janitor of a building that was the scene of the murder of a prominent Vietnamese businessman. Antonia "Tony" Sokolow (Sigourney Weaver) is the television reporter assigned to the case, and she is also the subject of a long-held crush by Daryll. He introduces himself to her, and she believes that he knows something about the murder, so she pursues him. Daryll lets her believe that he knows something to keep her interested in him. The two eventually fall in love.
Daryll's friend and former co-worker Aldo (James Woods), who was fired because of an incident between him and the businessman, is the prime suspect in the murder. Even though Daryll doesn't believe he is the killer, he helps keep Aldo away from the police and the reporter. Meanwhile, Tony's boyfriend Joseph (Christopher Plummer), an Israeli businessman, is becoming increasingly interested in her relationship with the janitor. While this is going on, the underlings of the dead businessman are following Daryll and Tony in case they do know something about the murder. We are led to believe that they are responsible for the businessman's death.
Neither Aldo nor the underlings are the killer. Joseph, Tony's boyfriend, is the killer. The Vietnamese businessman was financing Joseph's trafficking of Jews from the Soviet Union. When he threatened to expose the operation if his cut wasn't increased, Joseph killed him. Even though Daryll was in the building when the murder happened, he never saw Joseph, but Joseph saw him. Believing that he knew something about the murder, coupled with the knowledge that he has stolen away his girlfriend, Joseph decides to kill the janitor. He lures Daryll to a local horse stable and tries to kill him. They fight each other, and Daryll is shot, but survives. Joseph attempts to escape but is shot dead by the just arriving police when they think he is going for a gun. Tony and Daryll remain together at the end.