Morals are inherently generic. We broadly apply them to every situation we come across, rather than derive them on a case by case basis. Worse, no two people have exactly the same moral compass. Just because I meet someone I get along with, that doesn’t mean that we’ll feel the same way about bit torrent, or drone attacks, or Roman Polanski. And neither of us is going to have much luck winning the other over on any of these topics, because everybody’s own moral compass simply seems self-evident to them. You don’t prove that something is immoral, you just know it.
But we’re always willing to ignore our morals when we go to the movies. Stealing money is immoral, but we root for the heroes in heist thrillers anyway because the immorality of their actions is too abstract for us to care about. The audience is only going to care about the people onscreen and how they treat each other. Characters can be as immoral as they want, as long as they’re not unethical.
Unlike morals, ethics are specific to each situation, which is why they’re more dramatically interesting. You create an expectation of behavior, then you show one character who meets that expectation, and another one that breaks it. Everybody gets that. You’re making and breaking your own rules, instead of tapping into pre-existing rules that may or may not be in the audience’s head.
I’m working on a spec pilot right now, and I was going to end it with a shocking revelation of a moral breach on the part of my anti-hero, but then I realized that no one would really care. If I want to shock and agitate my audience, I have to end on the reveal of an ethical breach. When I look at similar shows, such as “The Shield” or “Damages”, the reveal at the end of both pilots is not that our anti-hero has harmed an outside victim, but a trusted ally. Not that’s rotten.