NakodaX

Situations · IP protection

What actually stops a customer keeping your software?

A sealed contract beside locked software modules and a customer’s server rack.

Practically, nothing stops an on-premise customer keeping and running software after a contract ends: they hold a complete working copy, and licence terms are enforced only by lawyers. The alternative is shipping the differentiating parts locked, so the software checks for permission and stops running when the contract does.

On-premise wins deals. That is why this problem exists.

Plenty of software is sold to run on the customer’s own infrastructure, and usually for good reasons. Regulated industries require it. Security teams prefer it. Some buyers simply will not put their most sensitive processing on someone else’s servers, and telling them to grow out of that view loses the deal.

So you ship. Your product goes onto their hardware, inside their network, under their control, and it works. That is the sale.

It also means every customer now holds a complete, working copy of the thing your company is. Your pricing engine. Your matching logic. Your scoring model. The parts that took years and that a competitor would need years to reproduce.

The contract ends. The servers do not.

Renewal season arrives and a customer decides to leave, or a deal quietly lapses, or a pilot never converts.

Ask what actually happens to the software at that moment. In most companies the honest answer is: nothing. The install keeps running. The licence key, if there is one, was checked at installation and never again, or it checks a file the customer’s own administrator can edit. Your terms require them to stop and to delete the binaries, and those terms are enforced by a lawyer writing a letter, which nobody wants to do to a company they might sell to again.

So the product keeps working. Sometimes for years. Sometimes on the production systems of a company that is no longer paying you, running the thing you built, at scale.

Obfuscation is not the answer to this

The usual responses are worth being honest about.

Obfuscation makes code harder to read. It does not stop it running, which is the actual problem here. A customer who never opens your binary but keeps using it for three years has cost you the same amount whether the code was obfuscated or not.

Licence key checks are a speed bump, because the check runs on hardware the other party controls. Anything your software decides locally can be changed locally.

Audit clauses assume you will exercise them. Almost nobody does, because the first company you audit is a company you will never sell to again.

Ship the important part locked

IP protection takes a narrower approach. You do not lock the whole product, which would be impractical and slow. You identify the parts that actually make it yours, which in most products is a small fraction of the codebase, and those parts ship locked.

The software runs on the customer’s servers exactly as it always did. When it reaches a protected part, it asks for permission, gets it, and continues. Under normal conditions nobody notices anything, and brief network interruptions are tolerated by design, so a momentary outage does not take a customer’s production system down.

What changes is what happens when you stop giving permission. The contract ends, and the protected parts stop unlocking. The software does not go on running without you, because the pieces that made it worth having were never fully in the customer’s hands.

What this really changes is renewals

The security argument is the obvious one. The commercial argument is the one that pays for the project.

Today, a renewal conversation with an on-premise customer has an unspoken asymmetry: they already have everything. Renewing is, in a sense, optional, and both sides know it. Support and updates are the only leverage, and a customer running a stable version may not value either very much.

When the software stops at the end of the term, renewal becomes a real decision about continuing to use a working product. That is the normal shape of a software business, and most on-premise vendors have never had it.

The same mechanism turns pilots into pilots. A 60-day evaluation that actually ends on day 60 does not become a three-year free deployment while a deal stalls.

What your engineers have to do

Less than they expect. Protection is applied to selected parts as part of your build, not by rewriting your product. Developers work with the source as normal. The locked version is what ships.

The honest cost is that protected software needs to reach your permission service, and that makes your uptime a contractual commitment rather than a marketing line. That is the trade. A file that opens without checking anything is a file you have permanently given away.

What changes

The parts of your product that make it yours ship locked, and unlock only while you give permission. The contract ends, and the software ends with it. Which also changes every renewal conversation you will ever have.

access ended

Related questions

What stops a customer copying on-premise software?
In most deployments, nothing practical. The customer holds a complete working copy and licence terms are enforced only by legal action. The alternative is shipping the differentiating parts locked, so the software asks for permission while it runs and stops working when the contract ends.
How do you end a customer’s access to on-prem software after the contract?
Withdraw permission centrally. If the software’s protected components unlock only while permission holds, ending the contract ends the software’s ability to run, without needing the customer to act, uninstall anything, or confirm deletion.
How is this different from licence key enforcement?
A licence key check runs on hardware the customer controls, so it can be altered or bypassed locally. Protection that requires a key held elsewhere cannot be resolved on the customer’s side at all, because the material needed to run the protected part is not present until permission is granted.

This one, or one very like it

IP protection. Start where the problem actually is.