When software protection depends on the wrong assumption

A protected software system surrounded by layered boundaries and safeguards
Categories: Website evolution

Software protection often takes shape around assumptions about what can be trusted.

We decide what should be allowed into a system, who should be able to interact with it, and which boundaries should keep unwanted behaviour away. When those boundaries work as expected, there is little reason to question them.

But protection has another side that is easier to overlook. A system also has to remain safe from what can happen within its trusted environment. An action does not become harmless simply because the person or software performing it was allowed to act. Sometimes the difficulty is not keeping something out, but recognizing what an allowed action can cause once it has already begun.

This becomes more difficult as software takes on more responsibility. The distance between what someone intends and what the system eventually does can grow, particularly when another piece of software is interpreting or carrying out that intention.

That raises a quieter question about protection: what exactly are we trusting when we decide that something is safe?

The question matters because trust is useful. A system cannot function by treating everything as hostile. But trust also cannot become an assumption that prevents us from examining what happens after something has been allowed to act.

Understanding that difference is where protection begins to change from simply controlling access to consciously safeguarding the system itself.

The protection we naturally trust

Most software gives us boundaries before we ever think about them.

A person has an account. That account has certain permissions. Some actions are available, while others are not. We may have to confirm something before it happens, or follow a particular process before a sensitive change is made.

These boundaries give us a useful sense of order. They help us decide what can happen and who can make it happen without having to question every action each time. When the rules are followed, we naturally develop confidence in the system around them.

That confidence is useful. A system cannot function if every action has to be treated as suspicious. We need to be able to allow people and software to do their work, and we need boundaries that make that possible.

But an action does not always end with the action itself. What happens afterward can leave the system in a different state, affect something else, or create another change that was not part of the original intention. The boundary may have correctly answered whether the action was allowed, while leaving a different question unanswered: what will that action produce?

This distinction is easy to overlook because the original permission still appears to be working. Nothing necessarily looks unusual at the moment the action is allowed.

The difficulty begins when we treat that permission as though it also tells us what will happen next.

When trusted activity causes damage

WordPress gives us a useful example of this because it is designed to let people manage and extend an existing system. An administrator needs enough freedom to change the site when the situation requires it, and that freedom is part of what makes the platform useful.

The difficulty is that a person can make a change with completely legitimate access and still not fully understand what that change will produce. The decision may make sense at the moment it is made, especially when attention is focused on the immediate task rather than everything that may follow from it.

Sometimes the consequence becomes visible only after the change has taken effect. Something that appeared to be a small adjustment can affect another part of the site, change how something behaves, or leave the system in a state that was never intended.

This does not necessarily mean that the person was careless. They may have acted with confidence, based on what they understood at the time. The missing piece may simply have been a clear view of the consequence before the action was allowed to take effect.

Once that happens, the nature of the problem changes. The question is no longer only whether the person had the right to make the change. Someone now has to understand what happened and work out how to bring the system back to a useful state.

This is why permission alone cannot tell us everything we need to know about protection. It can establish that an action is legitimate, but the system may still need a way to guard against what that legitimate action can produce.

When software becomes the actor

The situation becomes different when software is no longer only helping someone decide what to do, but begins carrying out the work itself.

This is already becoming part of how people use software. AI can interpret an instruction, decide what needs to happen, and perform actions that would previously have required a person to move through the system themselves. For WordPress users, that can be useful because many of the things they need to manage are repetitive, time-consuming, or difficult to understand in detail.

But it also changes where an unintended change can begin.

A person can misunderstand a setting and make a change they did not fully anticipate. An AI agent can misunderstand an instruction and carry that misunderstanding into the system through the actions it chooses to perform. The difference is not simply that one is human and the other is software. The software can continue acting after the original instruction has already left the person's attention.

This makes the earlier distinction more important. Permission can tell us that something is allowed to act, but it does not necessarily tell us that the operation it chooses to perform matches what the person intended.

Our recent testing with an AI agent made this more concrete. We found that an agent could make operational decisions in a way that did not remain within the capability boundary we had expected it to respect. What initially looked like a question of whether an action was permitted became a question of whether the system could still protect itself when the software acting on behalf of a user chose a different path.

That is a very different kind of uncertainty.

The user may have given a legitimate instruction. The software may have been legitimately allowed to act. Yet the resulting operation can still be something the user never intended to happen.

As software becomes more capable of acting on our behalf, protection therefore has to consider more than whether the actor is trusted. It also has to consider what happens when the actor interprets, chooses, or carries out something differently from what was intended.

Internal safety is easy to overlook

It is natural to look outward when we think about protecting a system.

We look for what should not be able to enter, who should not be able to access something, and what might happen if an unwanted influence reaches the system. These concerns are visible because the boundary itself gives us something to watch.

What happens inside can feel different. Once a person or a piece of software has been accepted as part of the environment, we tend to think of its activity as belonging to the normal operation of the system. There is less reason to stop and question something that has already been trusted.

This becomes particularly important when the system is designed to be extended or when software is given more responsibility. The activity taking place inside may be perfectly legitimate, yet its consequences can still move in a direction nobody intended.

Perhaps this is why internal protection is so easy to overlook. It does not always announce itself as a threat. Sometimes it begins with something ordinary: an instruction, a decision, or an action that seemed reasonable when it was made.

The difficulty is that the absence of bad intent does not guarantee the absence of damage. A system may need to protect itself not only from what should never have been allowed to enter, but also from what can happen after something trusted has been allowed to act.

That does not make trust unnecessary. It makes trust something that needs to be accompanied by awareness.

And as software becomes more capable of acting within the systems we depend on, that awareness becomes harder to leave to assumption alone.

What should protection assume?

A protection boundary does not necessarily have to be the last thing a system relies on.

For ordinary activity, the first boundary may be entirely sufficient. But some operations carry consequences large enough that allowing them to pass through one check and treating that as the end of protection can leave too much to assumption.

This becomes particularly important when an action can change something fundamental or difficult to restore. The question is not whether the person or software performing it is trusted. The question is what the system may have to deal with if the operation does not produce what was intended.

A second consideration can therefore exist around critical actions. Not necessarily another permission, and not necessarily another restriction, but a conscious opportunity to examine what is about to happen before the consequence becomes real.

That small interruption can be valuable precisely because it does not need to happen everywhere. It can be reserved for situations where the cost of getting something wrong is greater than the cost of taking a moment to consider it.

The value becomes even clearer afterward. Once an unintended change has taken effect, restoring the system consumes more than technical effort. It takes time, attention, and energy to understand what happened and bring things back into a useful state.

Protection can therefore be designed with more than prevention in mind. It can also reduce the amount of recovery that becomes necessary when prevention at the first boundary was not enough.

The assumption does not have to be that an actor is untrustworthy.

It can simply be that some consequences deserve another opportunity to be considered before they happen.

The uncertainty we should leave behind

There is a particular kind of uncertainty that comes with managing a system: not knowing whether a change will remain within the consequences we intended.

Without additional protection, that uncertainty can become a reason to step away from the system altogether. A site owner may decide that even a small task is better left to someone else, simply because the cost of an unexpected result is difficult to judge beforehand.

Protection can change that relationship with uncertainty, but it does not have to pretend that uncertainty has disappeared.

A scoped guardrail gives us something more useful. Within the area it protects, there is a defined boundary around the operations that matter. If something needs to be stopped, the boundary can act. If something does happen, there can also be a visible record of it.

This is where the idea becomes practical.

For example, in Plugiva ClientGuard, the protection is deliberately scoped rather than presented as a promise that every possible change to a WordPress site is covered. Its Sentinel can give an immediate view of when an operation happened, who initiated it, what was involved, and why it was recorded. When a deeper review is needed, the raw logs can provide more detail for examining what happened at the system level.

That visibility changes something important. Protection is no longer only about preventing an operation. It also gives the person responsible for the system a way to understand what happened within the protected area.

There can still be uncertainty outside that boundary. That is not a failure of the protection. It simply tells us where protection has not been deliberately applied, and where another form of care may still be needed.

What changes within the protected scope is the nature of the uncertainty. The question is no longer simply, "What if something goes wrong?" There is a boundary around what is being protected, and there is a record that can help answer what happened when an operation crosses an important point.

This is where a Sentinel becomes valuable. Knowing when something happened, who initiated it, what was involved, and why it was recorded can turn an uncertain event into something that can be understood. Deeper raw logs can then provide another level of detail when the system itself needs to be examined.

Perhaps that is what we should leave uncertainty behind with: not the belief that nothing unexpected will ever happen, but the confidence that within a deliberately protected scope, an unexpected operation does not have to remain an unexplained one.

A guardrail can create a moment of awareness before an important operation. A Sentinel can preserve that awareness afterward.

The system may still have boundaries. It may still have unknowns beyond them. But within the protection we deliberately chose, "what if?" does not have to remain unanswered.


Related posts

Man viewing an architectural model representing a growing system
15 Sep 2026
Growing systems begin protecting themselves

Explore how growing websites reorganize internally as responsibilities, governance, architecture, and guardrails evolve.

Developer organizing a growing project to keep responsibilities clear
06 Aug 2026
How governance emerges naturally as projects grow

Discover why governance isn't added through rules, but emerges naturally as projects grow and complexity demands clearer ownership and lasting understanding.

Mature tree with connected branches symbolizing shared understanding.
31 Jul 2026
When workflows stop matching reality

As websites grow, the way people work together must evolve too. Discover why workflows aren't just about moving work. They're about moving shared understanding.

← Back to blog