Every AI product still needs traditional application security, full stop. Secure authentication, authorization, dependency management, secrets handling, input validation, output encoding, logging, incident response, none of that gets to skip the line just because there's a language model somewhere in the stack. A model doesn't make SQL injection, broken access control, or cloud misconfiguration disappear. Those are still exactly as dangerous as they've always been.
The problem is that these practices, however well executed, don't cover the complete behavior of an AI application. AppSec was largely built around code paths a developer wrote on purpose. AI systems add a component that interprets natural language, generates variable output, and can choose actions at runtime. Which means the surrounding code can pass every standard check with flying colors while the product as a whole is still genuinely unsafe.
The right conclusion here isn't that AppSec has failed. It's that the system picked up a new attack surface that AppSec was never designed to cover.
Perfectly secure code can still produce an insecure AI workflow
Take a document assistant as an example. The web application uses parameterized queries, escapes rendered output, stores secrets correctly, and requires a valid user session. A traditional review would find nothing obviously wrong here, and it wouldn't be lying.
Then the assistant retrieves a document that happens to contain hidden instructions telling the model to ignore its actual task and reveal other context instead. The model follows those instructions and includes confidential text in its answer. No buffer overflow happened. No SQL query got manipulated. The weakness came entirely from treating untrusted content as though it couldn't possibly influence the system's control flow, when it clearly can.
Or take an agent with a refund tool. The API is authenticated, the tool only accepts valid structured data, everything looks fine on paper. A user talks the model into requesting a refund above the approved limit. If the tool simply trusts whatever the model decided, the system performs an unauthorized business action, even though the API itself works exactly as its developers implemented it.
Both examples point at the same gap. Traditional AppSec asks whether software executes code safely. AI application security has to also ask whether model-influenced decisions stay inside policy, which is a fundamentally different question.
Prompt injection isn't a normal validation problem
Developers are used to separating code from data. Parameterized queries keep user input from turning into SQL. Output encoding keeps text from turning into browser markup. Typed APIs constrain the shape of a request before it gets anywhere near business logic.
Language models complicate that separation, because interpreting the meaning of text is the whole point of what they do. A retrieved page can contain a sentence that acts like an instruction. A tool response can tell the model to go call another tool. A user can frame a request as a role-play, a translation exercise, a debugging task, or an encoded message, and any of those framings can smuggle intent past a filter looking for obvious keywords.
Simple keyword blocking was never going to cover all of these forms, and it doesn't. What actually helps is architectural: clear trust boundaries, constrained context, limited tools, independent authorization, output validation, and monitoring that doesn't rely on the model policing itself.
The OWASP Top 10 for LLM and Generative AI Applications treats prompt injection as a central application risk, and for good reason. The lesson worth internalizing is that prompt instructions are not a reliable security boundary. The model can help flag suspicious content, sure, but deterministic controls need to be the ones actually deciding what data and actions are allowed.
Model output is a new class of unsafe input
Plenty of applications treat a model's response as the finished product. Others pass it straight into another system. Generated output can turn into HTML, SQL, shell commands, source code, workflow parameters, or instructions handed to another agent entirely.
From the downstream system's point of view, model output is untrusted input, no different in kind from anything else arriving from outside a trust boundary. It needs validation and encoding matched to wherever it's headed. A generated command shouldn't run just because it looks plausible. A generated URL shouldn't get fetched without network restrictions in place. A generated database request shouldn't bypass the current user's authorization just because a model wrote it instead of a person.
This principle sounds familiar because it's lifted straight from AppSec. What's different is the scale and variability involved. A model can generate far more valid-looking forms than any developer sat down and anticipated, so tests need to focus on whether the enforced boundary actually holds, not on checking off a short list of sentences someone expected to see.
Retrieval and memory move the data boundary
Retrieval-augmented generation usually gets added to connect a model to internal documents, and it does improve accuracy. It also opens up two security questions that are easy to skip past.
The first is access control, plain and simple. Search results need filtering against the requesting user's actual rights before anything enters the prompt. Asking the model nicely to ignore unauthorized documents is not access control, no matter how the instruction is worded.
The second is content trust. A document can be entirely legitimate and still contain malicious or outdated instructions somewhere inside it. External web content is even less trustworthy than that. Retrieval systems need provenance, source restrictions, and a firm rule that retrieved content only ever supplies information, never authority.
Memory adds a persistence problem on top of all that. If an agent stores user-provided instructions for later sessions, a one-time attack can become a durable one that outlives the conversation that created it. Teams need real limits on what memory actually records, who can read it back, how long it sticks around, and how it gets corrected or deleted when something goes wrong.
Traditional data-flow analysis still helps map these paths, but the review has to also account for the model's ability to combine information across sources and turn that combination into a decision nobody explicitly asked for.
Tools are what turn a model's mistake into a real action
How much an AI system's security posture matters depends heavily on its tools. An agent that can only search public documentation carries a very different risk than one that can modify accounts or push a deployment.
Tool descriptions, schemas, and credentials are what define an agent's practical authority in the real world, whatever the model itself believes it can do. Secure AI tool design tends to include:
- Narrow operations instead of broad administrative interfaces.
- User-scoped credentials instead of shared powerful accounts.
- Server-side limits for amounts, destinations, rates, and resources.
- Approval for high-impact or irreversible actions.
- Idempotency and rollback where the business process supports them.
- A record of the request, policy decision, tool result, and actor.
The model can propose an action all it wants. It should never be the only component deciding whether that action actually goes through.
Static testing can't see every model-driven failure
Static analysis, software composition analysis, secret scanning, and infrastructure checks are all still valuable, and none of them should be dropped. They find vulnerable dependencies, dangerous functions, exposed credentials, and configuration errors reliably.
What they can't do is tell you every way a model will respond to adversarial context, because that's simply not what they're built to look at. AI systems need behavioral testing on top: prompt injection, data extraction, tool misuse, permission bypass, resource-exhaustion scenarios, run repeatably, and checked against the final control outcome rather than a single pass.
The MITRE ATLAS knowledge base documents adversary tactics and techniques for AI-enabled systems, and it's a useful way to turn a vague worry into a concrete threat scenario worth testing. The NIST Generative AI Profile gives a structured way to connect generative AI risks back to governance and measurement work.
Because model behavior varies run to run, a single successful test is weak evidence of anything. The better question is whether the same policy boundary holds up across different wording, different context, different model versions, and repeated runs, not whether it held once.
Runtime controls matter more once a model is involved
Traditional AppSec tends to concentrate its effort before deployment. Production monitoring matters, but a lot of the actual assurance still comes from reviewing code and configuration ahead of time.
AI systems need stronger runtime awareness than that, because behavior depends on live prompts, retrieved context, model versions, and tool responses that no pre-deployment review can fully anticipate. Teams need to watch denied actions, unusual tool sequences, repeated injection attempts, data-handling events, approval results, and sudden changes in cost or latency, as they happen.
Runtime controls should fail safely, without exception. If a policy service goes down, the system shouldn't silently wave a sensitive action through. If an approval expires, the request needs to stay blocked, not proceed by default. If a tool comes back with unexpected data, the agent shouldn't just keep going with broader privileges because nothing explicitly told it to stop.
Where TELEON fits
TELEON is built to provide policy enforcement and auditability around AI agent activity, integrated through a gateway, middleware, or runtime path depending on how the application is architected. The platform also includes privacy vault tokenization and trust scoring.
That supports controls AppSec tools generally don't provide on their own: observing model and tool activity, and applying policy right at the AI runtime boundary. It doesn't replace code review, dependency scanning, identity, cloud security, or secure tool implementation. Those stay prerequisites, not options.
Extending an AppSec program to actually cover AI
Keep the existing secure development lifecycle. Just add AI-specific review points into it rather than bolting on a parallel process nobody follows.
During design, document the model, prompts, context sources, memory, tools, and the worst-case impact of an action. During implementation, apply authorization before retrieval and execution happen, not after. During testing, include adversarial language and account for variable model behavior instead of testing only the happy path. Before release, confirm high-impact actions have deterministic limits and approval in place. In production, keep monitoring policy decisions and tool outcomes, because this isn't a one-time check that stays valid forever.
Traditional AppSec protects the code that makes an AI product possible. AI security protects the decisions and actions that emerge when that code gives a model access to data and authority. A production system needs both disciplines working together.
