Building compliant software in insurance
Insurance regulation is state by state, which most teams treat as a reason to guess. It is really a reason to build the rule into configuration rather than into code, so the same application can satisfy Iowa and Ohio without a special case for each. This guide covers what the NAIC model laws actually require, which parts reach your application, and why a working system so often looks compliant from the inside while missing the one thing an examiner asks for.
Key takeaways
- The NAIC Insurance Data Security Model Law asks for a written information security program based on a risk assessment, a named person responsible for it, an incident response plan, and breach notification on a short clock. More than 25 states have adopted some version of it, and the details differ by state.
- State adoption variance is an engineering problem as much as a legal one. A notification timer, a threshold, or an exemption that differs by state has to live in configuration keyed to the policyholder's state, so a single hardcoded rule cannot cover every jurisdiction.
- The Model Audit Rule reaches internal control over financial reporting for insurers over the $500 million premium threshold, and it explicitly allows automated and computer-assisted techniques to support that control, which is where a check suite becomes audit evidence rather than a nice-to-have.
- AI-written code makes the unglamorous work of building state-by-state compliance checks affordable for the first time. It also produces insecure code by default, so the checks have to be independent of the code that was generated.
- Most compliance gaps in a running insurance application are invisible from inside the team, because the app does exactly what it was designed to do. The gap sits in the part nobody designed: the export path, the read nobody logged, the state that was never configured.
Ask an insurance software team whether their application meets state data security requirements and the answer usually starts with a state, not a system. "We're licensed in Ohio, so we follow Ohio's version." That answer covers one state correctly. The next question, "and the other 24 states you are licensed in," is the one that finds the gap.
Insurance regulation has a structure that makes this predictable. Unlike a single federal rule, the NAIC Insurance Data Security Model Law is a template that each state legislature adopts on its own schedule, with its own edits. More than 25 states have adopted some version of it as of early 2026 [1]. The core shape repeats: a written information security program, a risk assessment behind it, a named person accountable for it, an incident response plan, and notification to regulators and consumers within a set number of days after a breach is discovered. The details that vary are the ones that matter to an engineer: the notification deadline, the size threshold that triggers it, and which categories of licensee are exempt.
That variation is not a reason to treat compliance as a legal problem with no engineering shape. It is a reason to build the shape once and configure it per state, the same way a tax engine handles fifty different rates rather than shipping fifty different applications.
Why this reframing matters for how software gets built
The model law is, in its operative sections, a specification. "Develop, implement, and maintain a comprehensive written information security program based on ongoing risk assessment" [1] describes a process with an artifact: a program document, produced from a risk assessment, kept current. "Notify the commissioner of insurance ... within 3 business days" [1] (the timing most states adopted) describes a deadline with a trigger: a breach is discovered, and a clock starts. Specifications like these can be tested. A clock either fires within the window or it does not.
Most insurance software treats these requirements the way most regulated software treats requirements in general: read once, implemented approximately, described in a policy document, and left to drift as the application grows around it. Three years after the incident response plan was written, the application added a new integration partner who receives policyholder data, and nobody updated the plan to cover a breach that starts on that partner's side. The policy still reads correctly. The system it describes no longer matches it.
Turning a specification into a check that runs on every change closes that gap, and it is the same argument we make across every regulated industry we build for: see why AI-native development fits regulated work for the general case. Writing several hundred narrow checks, one for each state's notification deadline and each threshold and each exemption, used to be an amount of unglamorous engineering that lost every prioritization meeting to a feature a salesperson was asking for. When generating that code is close to free, the checks stop being a quarter of the engineering budget and become an afternoon of specification work plus a run that repeats forever.
The honest counterweight
None of this holds if the part that makes it work gets skipped, and it is worth saying plainly rather than selling around it.
Generated code is not secure by default. Veracode's spring 2026 testing across more than 150 models and 80 coding tasks found only 55 percent of generations produced secure code, a figure that has stayed roughly flat for two years while syntax correctness climbed above 95 percent [2]. Models became very good at writing code that runs and did not become correspondingly good at writing code that is safe, and in an insurance application the paths where that gap costs the most are exactly the ones a regulator cares about: who can read a policyholder's claim history, what gets logged when they do, and what happens to the data on deletion.
So AI-native development without independent verification produces the same risk faster, not less risk. The checks have to be derived from the obligation before the implementation exists, and graded by something other than the model that wrote the code. Our piece on why you should never let the model grade its own work covers the mechanism, and it is the difference between this being a genuine advantage in insurance software and being a faster way to accumulate the same old risk.
What actually reaches your code
Insurance compliance covers a great deal that never touches an engineer: licensing, rate filings, agent appointments, market conduct. The useful split is the same one that applies across every regulated industry: separate what is satisfied by a person doing something from what only the running system can satisfy, and treat the second set as engineering requirements. Our guide to regulated industry software covers that split in general; this hub applies it to insurance specifically.
The obligations that reach the code cluster in a small number of places. Turning the model law into a specification your team can build against, covered on translating NAIC model law into engineering requirements. The fact that the specific numbers, the notification deadline, the size threshold, the exemptions, differ by state and have to live in configuration rather than in a hardcoded rule, covered on state-by-state data security requirements for insurance software. What the application itself has to do the moment a breach is suspected, covered on incident response and breach notification in your application. For insurers above the Model Audit Rule's premium threshold, what the rule expects of internal control and how software teams fit into that, covered on Model Audit Rule controls for software teams.
Each of those pages translates a rule into what the system has to do and what a check for it looks like.
Building it right, and knowing where you stand
Two further pages cover the practical side of doing this well. Evals as insurance compliance evidence covers why a check suite derived from the model law's requirements is stronger evidence in an exam than a policy document, because it demonstrates behavior rather than intent. Designated security officer and access control covers the model law's requirement to name a person accountable for the security program, and what that means for how access is modeled and enforced in the application itself.
Why teams do not know their own app has a gap
The most useful thing we can tell an insurance team is that a compliance gap in a live application is usually invisible from the inside, for a structural reason rather than a careless one.
An application does what its team designed it to do. When the team reviews it, they review it against that design. The gaps sit in what nobody designed: the state that was never added to the notification configuration because the company was not licensed there when the feature shipped and nobody revisited it when a new license was approved, the claims adjuster export tool that reads customer records in bulk with no audit entry because logging was built around the customer-facing screens, the incident response plan that names a person who left the company fourteen months ago. Each of these is a system working exactly as built. None of them was a decision anyone made on purpose.
This is why a self-review by the same team that built the system usually finds very little. You cannot review against a specification that was never written down, and the whole reason these gaps exist is that it was not. Compliance gaps in insurance software covers the specific patterns we would look for first.
Which obligations apply to your business, and in which states, is a question for counsel rather than for engineers, and nothing in this guide is legal advice. What it does is take the obligations once somebody has scoped them and turn them into things a system can be tested against.
If you are building or modernizing an insurance product, our custom software development service is the place to start, and our eval-driven development guide covers the method behind every check suite we build. If what you need first is to find out where your current application stands, get in touch and we will scope an audit against your real obligations rather than a generic checklist.
Compliance is a property of a running system, and the only honest way to know you have it is to check, on every change, in every state you are licensed to sell in.
Explore the guide
Start here
Why insurance software needs a compliance-first build
Most insurance software gets built first and made compliant second, usually right before a launch date or a renewal audit forces the question. That order costs more than it saves, because the requirements that matter most, the ones tied to state law, are easiest to satisfy when they shape the data model from the start rather than get bolted onto one that was not built with them in mind.
Translating NAIC model law into engineering requirements
The NAIC Insurance Data Security Model Law is written in legal language, for legislatures to adopt and lawyers to interpret. Somewhere between that text and a running application, somebody has to convert it into behavior a system can be tested against. This page covers that conversion, using the model law's own sections as the working example.
The rules that reach your code
State-by-state data security requirements for insurance software
More than 25 states have adopted some version of the NAIC Insurance Data Security Model Law, and each adopted version can differ in its notification deadline, its size threshold, and its exemptions. An application licensed in a dozen states needs a way to represent that variation, not a single rule that happens to be right for the state the team thought about first.
Incident response and breach notification in your application
An incident response plan is usually a document describing what people will do. The part that lives in the application is different and gets far less attention: identifying exactly which policyholders were affected, and firing a notification within a clock that starts the moment a breach is determined, not the moment someone gets around to writing the notice.
Model Audit Rule controls for software teams
The NAIC Model Audit Rule applies to insurers above a premium threshold and requires an independent annual audit covering internal control over financial reporting. It explicitly permits automated and computer-assisted techniques to support that control, which is the opening for a software team to turn an annual audit scramble into something closer to continuous evidence.
Building it right
Evals as insurance compliance evidence
When an examiner asks how a company knows its security program still matches its risk assessment, or that every licensed state has a correctly configured notification rule, the usual answer is a document. A check suite derived from those same requirements and run on every change answers the same question with behavior instead of intent, which is a stronger and more durable kind of evidence.
Designated security officer and access control
The NAIC model law requires designating an employee responsible for the information security program, which is a governance requirement most companies satisfy easily on paper. The harder, more consequential part is that the program this person is accountable for has to actually control who can reach policyholder data, and access models decay quietly in ways that make a named officer's job much harder than a title implies.
Common questions
What does the NAIC Insurance Data Security Model Law require?
The model law requires licensees to develop, implement, and maintain a written information security program based on an ongoing risk assessment, name a person responsible for the program, adopt an incident response plan, and notify the commissioner of insurance and affected consumers after a breach on a set timeline, most commonly 3 business days to the commissioner. More than 25 states have adopted some version of it, and the exact numbers vary by state.
Does the NAIC Model Law apply in every state?
No. It is a model law, meaning the NAIC drafted it as a template for state legislatures, and each state decides whether to adopt it and how to modify it. More than 25 states had adopted some version as of early 2026, and a licensee has to check the specific version adopted in each state it operates in rather than assuming one national standard.
What is the Model Audit Rule and who does it apply to?
The NAIC Model Audit Rule, also called Regulation 205, applies to insurers with more than 500 million dollars in direct written premiums and requires an independent annual audit by CPAs, covering auditor independence, corporate governance, and internal control over financial reporting. The rule explicitly permits insurers to use automation and computer-assisted techniques to support that control.
How is state-by-state variation in insurance data security law an engineering problem?
Because the specific numbers differ by state: the breach notification deadline, the size threshold that triggers it, and which categories of licensee are exempt. An application that hardcodes one state's rule will misapply it the moment a policyholder in a different state has a claim, so these values belong in configuration keyed to the policyholder's state rather than in a single fixed rule.
Is AI-generated code safe to use in insurance software?
Only with independent verification. Veracode's spring 2026 testing found only 55 percent of model generations produced secure code while syntax correctness ran above 95 percent, so generated code compiles far more reliably than it protects. In insurance software, checks derived from the model law's requirements, written before the implementation and graded by something other than the model that wrote the code, are what make generated code safe to ship.
Why do insurance applications fail compliance checks they believe they pass?
Because the gaps sit in what nobody designed rather than in what somebody designed badly. A state added to a company's license list after a feature shipped, a bulk export tool built without the same logging as the customer-facing screens, or an incident response plan naming a person who has since left the company are each the system working exactly as built, which is why reviewing it against its own design tends to find nothing.
Who decides which insurance regulations apply to a specific application?
Counsel, not engineering. Which obligations apply, in which states, and to which categories of licensee is a legal scoping question that depends on facts an engineering team does not have visibility into. What engineering can do once that scoping exists is convert each obligation into a specification and a check that runs on every change.
Where should an insurance team start if it suspects compliance gaps?
Start by listing which states the company is licensed in and comparing that list against the states configured in the application's notification and threshold logic, since a mismatch there is common and easy to check. Then test the same four areas that account for most gaps in any regulated application: who can read what, what gets recorded when they do, what happens to data on deletion and export, and whether the incident response plan still names people who are still employed.
References
- [1] NAIC, Insurance Data Security Model Law (#668), adopted 2017: requires a written information security program based on a risk assessment, a designated responsible employee, an incident response plan, and breach notification to the commissioner and consumers on a set timeline; more than 25 states had adopted some version as of early 2026.
- NAIC Model Law Guide, RadarFirst: a practical summary of state-by-state adoption status and the variation in notification timelines and thresholds across adopting states.
- NAIC Model Audit Rule (Regulation #205): applies to insurers over $500 million in direct written premiums, requires an independent annual CPA audit, and covers auditor independence, corporate governance, and internal control over financial reporting.
- NAIC, Model Audit Rule compliance requirements guide: describes the internal control expectations under Regulation 205, including the use of automation, computer-assisted audit techniques, or third-party software to support compliance.
- [2] Veracode, Spring 2026 GenAI Code Security update: more than 150 models across 80 tasks, only 55 percent of generations produced secure code, against syntax correctness above 95 percent.
Related reading
Adding eval tests was the best decision we made
We generate every line of code we ship. The single change that made that safe was writing the check before the code, and it turned out to change how we review, how we spec, and how fast we can move.
Never let the model grade its own work
When the same run writes the code and the tests, a green build proves the code agrees with itself. That is not verification, and it is the most common way an AI-built codebase becomes confidently wrong.
The real cost of shipping unverified code
The invoice for unverified code does not arrive as a bug report. It arrives as a codebase nobody will touch, a review queue that never clears, and a team that has stopped trusting its own pipeline.
A practical pre-launch security review for a small team
You do not need perfect security to launch. You need to check the handful of basics that catch most real problems, and to know when the risk is big enough to bring in a specialist.