Research

How AIL Handles Security

Field Note

An AI assistant is part of your software, your data flow, and your customer experience. Security belongs in the design of that whole system.

Drake Griffith, our co-founder, CTO and Head of Security, leads that approach at Actual Intelligence Labs. Here is how it shows up in the systems we build.

Short answer

AIL builds security around what an AI system can access, what it can do, and how the surrounding software checks each request. Drake Griffith leads this work as CTO and Head of Security. Our approach combines limited permissions, server-side controls, AI guardrails, and verification against the ways a system can fail.

Who Owns Security at AIL?

Drake Griffith is AIL's co-founder, CTO and Head of Security. He leads the technical direction of the studio and its security approach together, so decisions about permissions, integrations, and AI behavior belong in the engineering work from the start of a project.

Security decisions change what a system should be allowed to do. They affect which data enters a model, which integrations an assistant can reach, and when a person needs to take over. Putting that responsibility beside engineering gives the work a named owner. You can meet Drake and Zach Kellman, our co-founder and CEO, on the About page.

This article describes our approach through controls present in our website-assistant code and development practices. A project's final configuration depends on its data, users, and scope. The useful question in a security conversation is which controls protect a particular workflow and how those controls will be checked.

What Can an AI Assistant Actually Do?

We begin with the job the assistant needs to perform and limit its available tools to that job. A website assistant that answers questions and captures a lead does not need a general command runner, unrestricted database access, or permission to change unrelated business records.

In our website-assistant implementation, the model has one defined lead-capture tool. Application code handles the integration. That keeps the available action surface narrow: answering a question does not give the assistant every permission held by the business behind it. Even a small write capability deserves validation because a bad submission can still create unwanted records.

OWASP describes excessive agency as a risk when an AI system receives more functionality, permissions, or autonomy than it needs. For each build, we ask what the assistant needs to read, what it needs to change, and which decisions should remain with a person. Those answers shape the integration.

How Do We Protect the Connection to the Model?

Model and integration credentials stay on the server in the assistant architecture we build. Requests pass through application controls before reaching the model, including origin checks, signed session validation, and rate limits. A public chat interface is an entry point into a controlled backend.

The browser calls our application endpoints. The backend validates the session and applies request limits before doing model work. Origin checks are one layer; they are paired with session and abuse controls. Putting a secret into browser code would bypass that separation, so the widget does not call the model provider using a private key.

We also keep conversation history on the server for this assistant. The backend takes the new message and loads its own stored history instead of accepting a browser-supplied conversation as authoritative. That reduces the opportunity to fabricate earlier messages. Access checks belong in code because instructions to a model cannot authenticate a request.

How Do We Handle Prompt Injection and Unreliable Answers?

Our assistant combines input screening, a separate classifier, retrieval from a business knowledge base, and checks on the generated reply. Each layer has a limited job. These controls reduce risk, while restricted tools and server-side permissions limit what can happen if the model still responds incorrectly.

Input screening catches known attack patterns. A separate classifier checks whether a message belongs in the assistant's scope before the answer model runs. Retrieved business content supplies the material for an answer, and an output filter checks for signs of instruction leakage. When classification fails or usable context is missing, the code routes to a predefined response.

Grounding an answer in documents helps with relevance, but it does not make those documents trustworthy instructions. OWASP's prompt-injection guidance explains that retrieval alone does not eliminate the problem. We treat model behavior as fallible and keep access boundaries outside the model. No filter justifies giving a public assistant broad administrative powers.

How Do We Limit Abuse, Usage, and Unnecessary Data?

Our assistant code includes message limits, input-size checks, a session question limit, and a configurable daily model-usage budget. These controls bound how much work a public endpoint can trigger. Data handling is a separate design decision covering conversation storage, lead capture, and optional visitor tracking.

The budget mechanism reserves capacity before model work and reconciles recorded usage afterward. Its protection depends on a finite budget being configured, so the existence of a budget function is not enough by itself. Limits and fallback behavior need to match the deployment. When a session reaches its question limit, the assistant directs the visitor to the team.

We also separate chat functionality from optional visitor tracking in the widget. The tracking bridge checks consent before loading. A conversation can still contain personal information, and a captured lead may include conversation context in the CRM. Temporary chat storage and a CRM record have different lifetimes; requirements for both belong in project scoping.

BoundaryControl in our assistant implementation
Access to the modelServer-side credentials and validated sessions
Available actionsA narrowly defined lead-capture tool
Model behaviorInput screening, classification, grounding, and output checks
Resource useRate limits, question limits, and a configurable usage budget
Source: AIL website-assistant implementation review, October 7, 2026. Controls vary by deployment.

How Do We Check That the Boundaries Hold?

Verification needs to exercise rejection paths as well as successful conversations. Our assistant repository includes adversarial smoke checks for invalid sessions, disallowed origins, off-topic requests, injection attempts, oversized input, and rate limits. These checks make expected behavior explicit and give engineering a repeatable starting point for review.

The repository also provides a budget-exhaustion test mode. A test file describes what should be checked; a passing run provides evidence about the version and configuration actually tested. That distinction matters whenever a model, integration, or setting changes. Our harness-engineering work follows the same principle: define observable behavior and verify it.

For your project, the conversation starts with the data involved and the consequences of an incorrect action. We use that scope to discuss access, approvals, fallback behavior, and verification. Bring us the workflow, and we can work through those decisions with you before expanding what the system is allowed to do.

Common Questions

Who is the Head of Security at AIL?
Drake Griffith is co-founder, Chief Technology Officer and Head of Security at Actual Intelligence Labs. Security sits alongside his engineering and applied research responsibilities.
Does Drake still serve as CTO?
Yes. Head of Security is an additional role. Drake remains CTO and leads both engineering and the security approach behind our systems.
Can you guarantee an AI assistant will never be jailbroken?
No. We use layered defenses and limit the permissions available to the assistant so the surrounding software can contain risk when model behavior is wrong.
Are model API keys exposed in the website widget?
In the assistant architecture described here, model and integration credentials stay on the server. The browser calls application endpoints rather than the model provider directly.
Does every AIL project use the same security controls?
The principles carry across projects; the controls depend on the system. A public website assistant, an internal knowledge tool, and an agent that can change business records need different access and approval boundaries.
How can we discuss security requirements before a build?
Bring the data types, connected systems, access requirements, and actions you want the AI to perform to the initial scoping conversation. We can then define the relevant controls and verification work.

Sources

SourcePublisherLink
Prompt InjectionOWASP Gen AI Security Projectgenai.owasp.org
Excessive AgencyOWASP Gen AI Security Projectgenai.owasp.org
Harness EngineeringActual Intelligence Labsactualintelligencelabs.ai

Questions to explore next

Keep Exploring

Chalk stick figure in a hard hat presenting a little machine of blue gears it just built

Bring us the bottleneck.
We’ll build the system.

Building What's Next.