<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: David Boggs</title>
    <description>The latest articles on DEV Community by David Boggs (@david_boggs_adaptive).</description>
    <link>https://dev.to/david_boggs_adaptive</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4122167%2Face40476-f2c1-400d-88c2-7ed32840db1d.png</url>
      <title>DEV Community: David Boggs</title>
      <link>https://dev.to/david_boggs_adaptive</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/david_boggs_adaptive"/>
    <language>en</language>
    <item>
      <title>Least Privilege Is a Policy Until the System Can Say No</title>
      <dc:creator>David Boggs</dc:creator>
      <pubDate>Sat, 12 Sep 2026 14:51:45 +0000</pubDate>
      <link>https://dev.to/david_boggs_adaptive/least-privilege-is-a-policy-until-the-system-can-say-no-311h</link>
      <guid>https://dev.to/david_boggs_adaptive/least-privilege-is-a-policy-until-the-system-can-say-no-311h</guid>
      <description>&lt;h1&gt;
  
  
  Least Privilege Is a Policy Until the System Can Say No
&lt;/h1&gt;

&lt;p&gt;A technician needs to change one DNS record. The ticket is approved. The access request says "least privilege." The technician receives membership in a group that can edit the entire zone.&lt;/p&gt;

&lt;p&gt;The workflow followed policy. The permission did not match the task.&lt;/p&gt;

&lt;p&gt;This is where many least-privilege programs stop: someone has justified a role, approved its assignment, and perhaps scheduled a review. But the running system still permits substantially more than the work requires.&lt;/p&gt;

&lt;p&gt;For a buyer, the useful question is not "Do you support least privilege?" It is:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"What prevents someone authorized for this task from performing a different one?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That question separates an access policy from an enforced boundary. It also gives you a practical way to evaluate a vendor without accepting "role-based access control" as a complete answer.&lt;/p&gt;

&lt;h2&gt;
  
  
  A role is not necessarily a task boundary
&lt;/h2&gt;

&lt;p&gt;Role-based access control, or RBAC, assigns permissions through roles. It is useful for organizing access, and it can represent fine-grained permissions. There is nothing inherently incompatible between RBAC and action-level authorization.&lt;/p&gt;

&lt;p&gt;The problem is how roles are often defined.&lt;/p&gt;

&lt;p&gt;A "help desk" role might allow password resets across a broad user population. A "DNS operator" role might allow changes throughout a zone. Those permissions can remain available between tickets, even when the technician has no current reason to use them.&lt;/p&gt;

&lt;p&gt;An approval process does not narrow those permissions unless the system enforces the approved scope. A ticket saying "change this record" does not stop a credential from changing another record.&lt;/p&gt;

&lt;p&gt;Action-level authorization moves the boundary closer to the requested work. Instead of granting general authority over a resource, the system permits a defined operation against an allowed target, with constraints on its inputs.&lt;/p&gt;

&lt;p&gt;Consider a hypothetical DNS request:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Allowed operation: update an A record
Allowed target: app.example.com in the example.com zone
Allowed value: the address authorized for this change
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The important property is what happens when the caller changes that request. Can they update a different hostname? Change a different record type? Supply an unapproved address?&lt;/p&gt;

&lt;p&gt;A narrow screen is not enough. The underlying authorization must reject requests outside the allowed operation.&lt;/p&gt;

&lt;p&gt;Action scope and access duration are also separate dimensions. A short-lived administrator session still permits broad actions while it is active. An action console can enforce narrow operations while leaving permission to invoke them available indefinitely. Buyers need to evaluate both.&lt;/p&gt;

&lt;h2&gt;
  
  
  Turn the claim into a testable contract
&lt;/h2&gt;

&lt;p&gt;Before a demo, pick one routine administrative task. Avoid starting with the vendor's entire permission model.&lt;/p&gt;

&lt;p&gt;Write down what an authorized technician should be able to do. Then write down the nearest things they should not be able to do.&lt;/p&gt;

&lt;p&gt;For a password reset, you might allow resets for a designated employee population while excluding privileged accounts. For file-lock release, you might allow work on specified file servers while excluding other systems.&lt;/p&gt;

&lt;p&gt;These are your requirements, not assumptions about what every product supports.&lt;/p&gt;

&lt;p&gt;A useful evaluation worksheet looks like this:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Boundary&lt;/th&gt;
&lt;th&gt;Write down before the demo&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Caller&lt;/td&gt;
&lt;td&gt;Which person or group may invoke the action?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Operation&lt;/td&gt;
&lt;td&gt;What exact operation is permitted?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Target&lt;/td&gt;
&lt;td&gt;Which objects or systems are eligible?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Inputs&lt;/td&gt;
&lt;td&gt;Which values or options are accepted?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Duration&lt;/td&gt;
&lt;td&gt;When should invocation permission stop?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Evidence&lt;/td&gt;
&lt;td&gt;What should the record of execution show?&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Use this worksheet to run the following checks in a controlled test environment.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Test the nearest forbidden action
&lt;/h2&gt;

&lt;p&gt;Ask the vendor to demonstrate the permitted task, then attempt a closely related forbidden task using the same identity.&lt;/p&gt;

&lt;p&gt;For DNS, that could mean changing a neighboring record. For password resets, it could mean targeting an excluded account. A useful denial test stays close enough to the approved workflow that it exposes a real boundary.&lt;/p&gt;

&lt;p&gt;Watch where enforcement occurs.&lt;/p&gt;

&lt;p&gt;A disabled button or hidden menu demonstrates a user-interface restriction. It does not establish that the backend will reject the request. Have the vendor exercise the relevant service endpoint or another supported test path with an out-of-scope request.&lt;/p&gt;

&lt;p&gt;The acceptance condition is concrete: the unauthorized operation must not execute.&lt;/p&gt;

&lt;p&gt;Record the denial, but also verify the target's state. An error message alone is weak evidence if a change could already have occurred.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Inspect inputs that can widen the action
&lt;/h2&gt;

&lt;p&gt;An operation can have a narrow name and still expose broad authority through its parameters.&lt;/p&gt;

&lt;p&gt;"Remediate vulnerability" sounds specific. If the caller can provide arbitrary shell commands, choose any script, or modify execution arguments without restriction, the effective permission may be general remote execution.&lt;/p&gt;

&lt;p&gt;Ask to see the action's input contract. Which fields does the caller control? Which values are fixed or validated by the service? Can a target identifier point outside the approved system set?&lt;/p&gt;

&lt;p&gt;Test a modified request that widens one of those inputs.&lt;/p&gt;

&lt;p&gt;Do not assume every variable input is dangerous. Technicians need useful choices. The issue is whether those choices remain inside the intended authority boundary.&lt;/p&gt;

&lt;p&gt;A credible answer explains how the backend validates the request. "Our technicians know which values to enter" describes training, not enforcement.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Find the authority behind the console
&lt;/h2&gt;

&lt;p&gt;A console may prevent technicians from receiving administrator credentials while still using a privileged identity to perform work on their behalf.&lt;/p&gt;

&lt;p&gt;That can be a meaningful improvement. It also moves the trust boundary to the service executing the action.&lt;/p&gt;

&lt;p&gt;Ask how that service authenticates to the target systems and how its authority is restricted. Find out who can change action definitions or expand the allowed target set.&lt;/p&gt;

&lt;p&gt;Two permissions deserve separate attention:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Permission to invoke an existing action.&lt;/li&gt;
&lt;li&gt;Permission to create or modify what that action does.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If the same technician can rewrite an approved action into an arbitrary command, the action boundary offers little protection against that technician.&lt;/p&gt;

&lt;p&gt;You do not need a universal architecture requirement here. You need to understand where powerful authority resides, who controls it, and what a compromise of that component would expose.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Test revocation separately from task scope
&lt;/h2&gt;

&lt;p&gt;A tightly scoped action can still be available to the wrong person for too long.&lt;/p&gt;

&lt;p&gt;Remove a test user's permission while they have an authenticated session. Attempt the action again. Ask the vendor to explain when revocation takes effect, including any caching or session behavior.&lt;/p&gt;

&lt;p&gt;If your requirements include ticket-bound or time-limited authorization, test those explicitly. Close the test ticket or let the authorization expire, then retry.&lt;/p&gt;

&lt;p&gt;Do not treat these controls as automatic consequences of "least privilege." A product may constrain operations well without connecting authorization to individual tickets.&lt;/p&gt;

&lt;p&gt;That may be acceptable for recurring help desk work. For less frequent, higher-impact changes, you may require an additional approval or time boundary. Write that distinction into your evaluation instead of relying on the label.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Reconstruct the change from its audit record
&lt;/h2&gt;

&lt;p&gt;"Every action is logged" leaves substantial room for interpretation.&lt;/p&gt;

&lt;p&gt;After the test, ask a colleague who did not watch the demo to explain what happened using the available records.&lt;/p&gt;

&lt;p&gt;Can they identify the human caller, rather than only the backend service account? Can they determine the requested operation and target? Does the record distinguish a submitted request from a successfully completed change?&lt;/p&gt;

&lt;p&gt;For asynchronous operations, look for a way to connect the request to its eventual outcome. For failures, determine whether the record makes partial execution visible.&lt;/p&gt;

&lt;p&gt;Also ask who can modify or delete records and how your team would retrieve them during an investigation.&lt;/p&gt;

&lt;p&gt;Logging requires judgment. Recording passwords, reset secrets, or other sensitive input can create a new exposure. Define what investigators need while excluding values that should not appear in logs.&lt;/p&gt;

&lt;p&gt;A log is useful when it supports reconstruction, not merely when it exists.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Exercise the exception path
&lt;/h2&gt;

&lt;p&gt;Routine demonstrations tend to show valid input and a healthy target. Operational pressure arrives when those conditions disappear.&lt;/p&gt;

&lt;p&gt;Test what happens when the requested target is unsupported or the backend fails. Ask how technicians handle work that has no approved action.&lt;/p&gt;

&lt;p&gt;An exception path that routinely hands out broad administrator access can undermine the narrower workflow. That does not mean emergency access must disappear. It means you should evaluate its authorization and accountability separately.&lt;/p&gt;

&lt;p&gt;Also ask what it takes to add or revise an action. Someone must maintain the operation as systems change, validate it, and manage failures. A tightly constrained console is less useful if the approved action catalog cannot keep up with actual work.&lt;/p&gt;

&lt;p&gt;The buyer's question is whether the operational cost is manageable enough that staff will consistently use the controlled path.&lt;/p&gt;

&lt;h2&gt;
  
  
  Decide based on the demonstrated boundary
&lt;/h2&gt;

&lt;p&gt;After the evaluation, summarize results in plain statements:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Demonstrated:
The test identity could reset passwords for the allowed population.
The same identity could not reset an excluded privileged account.

Unresolved:
Revocation behavior during an existing session was not demonstrated.

Required before acceptance:
Provide and test the expected revocation behavior.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is more useful than assigning a vendor a generic "least privilege" checkmark.&lt;/p&gt;

&lt;p&gt;Action-level controls also have limits. An authorized operation can still be a bad decision. Updating the correct DNS record to the wrong approved address can cause an outage. Releasing a file lock can disrupt active work.&lt;/p&gt;

&lt;p&gt;Authorization constrains who can do what. It does not replace change validation or recovery planning.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where our own product lands on this
&lt;/h2&gt;

&lt;p&gt;Foyer, the Least-Privilege Action Console in Adaptive IP Services' Hub division, applies this approach to administrative work.&lt;/p&gt;

&lt;p&gt;IT staff receive a web console that runs only approved operations against allowed systems, without shared admin credentials or root. Every action is logged. The stated patterns include self-service DNS record changes, file-lock release, password resets, and vulnerability remediation.&lt;/p&gt;

&lt;p&gt;Those are the product's stated boundaries. Use the same evaluation above to examine them. Requirements such as ticket integration, time-limited grants, or particular audit-record fields should be verified directly; they should not be inferred from the phrase "least privilege."&lt;/p&gt;

&lt;p&gt;For your next evaluation, bring one real task and its nearest forbidden variation. Make the vendor show both the successful operation and the rejected request. That is where a policy claim becomes something you can inspect.&lt;/p&gt;

&lt;p&gt;Disclosure: I work at Adaptive IP Services, a Dallas based IT and security firm.&lt;/p&gt;

&lt;p&gt;David J. Boggs&lt;br&gt;
Founder and CEO, Adaptive IP Services&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.adaptiveips.com/adaptive-foyer" rel="noopener noreferrer"&gt;Foyer, Least-Privilege Action Console&lt;/a&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>devops</category>
      <category>sysadmin</category>
      <category>compliance</category>
    </item>
    <item>
      <title>Your AI vendor says "zero egress." Here is how to actually check.</title>
      <dc:creator>David Boggs</dc:creator>
      <pubDate>Sat, 12 Sep 2026 13:06:29 +0000</pubDate>
      <link>https://dev.to/david_boggs_adaptive/your-ai-vendor-says-zero-egress-here-is-how-to-actually-check-60</link>
      <guid>https://dev.to/david_boggs_adaptive/your-ai-vendor-says-zero-egress-here-is-how-to-actually-check-60</guid>
      <description>&lt;p&gt;Every private AI vendor now says some version of "your data never leaves your network." It is a good claim. It is also one of the easiest claims in the industry to make and one of the least often checked.&lt;/p&gt;

&lt;p&gt;I build and deploy this category of system for a living, so this is not a neutral post. But the test procedure below is vendor neutral, it runs in an afternoon, and it works just as well pointed at my product as at anyone else's. If you are evaluating a self-hosted AI knowledge base, RAG platform, or internal assistant, this is the part of the evaluation that nobody does and everybody should.&lt;/p&gt;

&lt;h2&gt;
  
  
  "Zero egress" is three separate claims wearing one coat
&lt;/h2&gt;

&lt;p&gt;When a vendor says zero egress, they could mean any of these, and the gap between them is where the surprises live.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The inference path.&lt;/strong&gt; Your prompts and your retrieved document chunks are not sent to a third party model API. This is the claim people think they are buying. It is also the one most likely to be true, because it is the headline.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The data plane around inference.&lt;/strong&gt; Embeddings, reranking, OCR, speech to text, document parsing, image description. A system can run the chat model locally and still ship every page of every indexed document to a hosted embedding endpoint. If your document set is the sensitive thing, and it usually is, this path leaks more than the chat path does.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The control plane.&lt;/strong&gt; Telemetry, crash reporting, usage analytics, license check-in, auto-update, model pulls, container registry pulls, DNS, NTP. None of this is your document text. All of it is metadata about your environment, and some of it is a live outbound channel into your network that you did not deliberately open.&lt;/p&gt;

&lt;p&gt;A product can be entirely honest about the first claim and still fail the second and third. Ask about all three separately, in those words, and watch which ones get a crisp answer.&lt;/p&gt;

&lt;h2&gt;
  
  
  The paths that actually leak
&lt;/h2&gt;

&lt;p&gt;From evaluating and building these stacks, this is the list I work through. None of it is exotic. All of it has shown up in real deployments of real products.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Hosted embedding models.&lt;/strong&gt; The most common one. Local chat model, remote embeddings. Ask specifically: what model generates the vectors, and where does it run.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sidecar services.&lt;/strong&gt; OCR, transcription, and layout parsing are often the piece a vendor did not want to build, so they called an API. If the product ingests scanned PDFs or audio, ask what handles them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reranking.&lt;/strong&gt; Same story, one layer down the retrieval pipeline, and easy to miss because it only fires on queries, not on ingest.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Error and crash reporting.&lt;/strong&gt; A Sentry-class SDK will happily transmit stack traces containing prompt fragments, file paths, usernames, and query strings. This is usually an oversight rather than a design, which does not make it better.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Product analytics.&lt;/strong&gt; Event streams with document counts, seat counts, feature usage, and sometimes query text for "search quality improvement."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;License and entitlement check-in.&lt;/strong&gt; A phone home on a timer. Often the hardest thing to remove, because the business model depends on it, and often the thing that silently breaks an air-gapped install thirty days after it worked fine.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Runtime model and dependency fetching.&lt;/strong&gt; If model weights are downloaded on first run instead of baked into the image, you have an outbound dependency and a supply chain question at the same time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DNS.&lt;/strong&gt; Even with egress blocked at the firewall, if the resolver is upstream then hostname lookups still describe your internal traffic to whoever runs that resolver. DNS query logs are the highest signal per unit of effort in this entire test.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Outbound integrations you turned on yourself.&lt;/strong&gt; Email notifications, webhooks, chat alerts, SSO to a cloud identity provider, connectors to SaaS sources. These are legitimate and deliberate. They are still egress, and they belong on the diagram.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  How to test it in an afternoon
&lt;/h2&gt;

&lt;p&gt;You do not need a lab. You need one host, a packet capture, and a representative workload.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: default deny, and log the drops.&lt;/strong&gt; Put the deployment behind an egress policy that denies everything outbound and logs every denied packet. Do not start with allow-and-observe. Start denied, then read what screams. On Linux, an nftables or iptables OUTPUT chain with a log target on the drop rule is enough. The log is your finding list.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: check the container network topology before you trust anything else.&lt;/strong&gt; If it ships as containers, inspect the network the AI services actually attach to. A bridge network created in internal mode has no gateway and no route out, which is a structural property you can verify in one command rather than a policy someone has to keep enforcing. Confirm which services sit on which network. The interesting finding is usually a single service that is on both.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: sinkhole DNS and read the query log.&lt;/strong&gt; Point the deployment at a resolver you control that answers everything with a black hole address and logs every query. Then run a full workload. The query log is a plain text list of every remote host the software wanted to reach, including the ones the firewall already blocked and the ones that fail silently. I have never run this test and learned nothing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4: run a representative workload, not a smoke test.&lt;/strong&gt; Index a real document set with real file types, including a scanned PDF and something with an embedded image. Ask twenty questions, including one that returns no good answer, because error paths are where crash reporters fire. Upload a document through the UI. Log in and out. Have an admin change a setting. Let it sit idle overnight, because timers are the point of the whole exercise.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5: capture the traffic, not just the logs.&lt;/strong&gt; Run a packet capture on the host interface for the whole window. Then look at what remains after you filter out your own management traffic. You are looking for TLS handshakes to hosts you cannot explain, and you are looking at timing, because a beacon on a fixed interval is a beacon regardless of what is inside it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6: pull the cord.&lt;/strong&gt; Remove the default route entirely and repeat the workload. Write down what breaks and how it breaks. Good behavior is full feature parity, or a clear degradation on a documented feature. Bad behavior is a hang, a silent failure, or a licensing error two days later. If a vendor says the product supports air-gapped operation, this test either confirms it in an hour or ends the conversation early, which is also a good outcome.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 7: ask how the isolation is enforced, not just whether it holds today.&lt;/strong&gt; The result you got is a snapshot of one build. The question that matters for the next three years is whether isolation is verified automatically on every build, or whether it was verified once by a person who has since moved teams. A vendor who can describe an automated check in their release pipeline is telling you something structurally different from a vendor who can only describe an architecture diagram.&lt;/p&gt;

&lt;h2&gt;
  
  
  Questions that are hard to bluff
&lt;/h2&gt;

&lt;p&gt;Send these before the demo. The answers, and how fast they come back, tell you most of what you need.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which components make outbound network calls at any point in normal operation, including timers and background jobs?&lt;/li&gt;
&lt;li&gt;Where do embeddings get generated, and by what model?&lt;/li&gt;
&lt;li&gt;What handles OCR, transcription, and document parsing?&lt;/li&gt;
&lt;li&gt;Is telemetry present, can it be disabled, and does disabling it stop the process or only stop the transmission?&lt;/li&gt;
&lt;li&gt;Does licensing require a periodic check-in, and what happens on day thirty with no route out?&lt;/li&gt;
&lt;li&gt;Are model weights and dependencies present in the artifact you ship, or fetched at first run?&lt;/li&gt;
&lt;li&gt;Is network isolation asserted in your release pipeline on every build, and what exactly does that check assert?&lt;/li&gt;
&lt;li&gt;What is the complete list of hostnames the product would resolve in a month of normal use?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That last one is my favorite. A vendor who has genuinely built for isolation can answer it from memory or from a config file. A vendor who has not will need to go ask engineering, and the delay is the answer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where our own product lands on this
&lt;/h2&gt;

&lt;p&gt;Adaptive Reservoir is a private AI knowledge platform that runs on hardware you own, on premise or in your own cloud account. It exists because the alternative most companies pick is banning AI outright and eating the productivity loss.&lt;/p&gt;

&lt;p&gt;Against the checklist above: the AI runs on an internal-only container network with no route to the internet, and that isolation is asserted by an automated release gate on every build rather than only claimed in documentation. It runs with no internet connection at all. There is no cloud account, no external API key, and no per-token bill, because the model runs on your hardware. The target footprint is a single Linux host with an NVIDIA GPU, and 16 GB of GPU memory is the practical sweet spot. Answers cite the documents and decisions they came from, which is its own small audit property: a citation you can open and read is a retrieval path you can verify by hand.&lt;/p&gt;

&lt;p&gt;The honest caveat, because a post about verifying claims should not hide behind its own. Reservoir offers optional connectors that pull AI activity from platforms you already use, through each vendor's official compliance API. Those connectors are outbound by definition. They are scoped, they are something you choose to enable, and they belong on your network diagram in a different color from the inference path. Any vendor telling you their product has literally zero outbound sockets under every possible configuration is describing marketing, not networking.&lt;/p&gt;

&lt;p&gt;Base pricing starts at $395 per month and scales with deployment size and the optional modules you turn on. Details at &lt;a href="https://www.adaptiveips.com/adaptive-reservoir" rel="noopener noreferrer"&gt;adaptiveips.com/adaptive-reservoir&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Run the test
&lt;/h2&gt;

&lt;p&gt;The point of this post is not the product. The point is that "your data never leaves" is a testable assertion, and almost nobody tests it. A DNS sinkhole, a default deny rule, and a representative workload will tell you more in one afternoon than a security questionnaire will tell you in six weeks.&lt;/p&gt;

&lt;p&gt;Run it against whatever you are evaluating. Including ours.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclosure: I work at Adaptive IP Services, a Dallas based IT and security firm, and we build Adaptive Reservoir.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>ai</category>
      <category>devops</category>
      <category>privacy</category>
    </item>
  </channel>
</rss>
