Your model weights are code. Inside an air gap, nobody is watching them load. Most "we run AI on-prem, nothing leaves the building" projects I read about fail the first real security review for one boring reason: the stack was built with internet access and then "disconnected" at the end. The gap hides the problem until the first restart, when the server hangs trying to reach a hub that no longer answers. Three things bite almost everyone: 1. Silent phone-homes. A model server resolves a model name by calling out to a hub. Usage stats, tokenizer fetches, embedding-model downloads, update checks in the web UI, tracing SaaS in the agent framework. Set the offline switches (HF_HUB_OFFLINE=1, TRANSFORMERS_OFFLINE=1, VLLM_NO_USAGE_STATS=1, DO_NOT_TRACK=1), load from local paths, and then do not trust the config. Enforce it at the network layer with deny-all egress. App-level flags are a hope, nftables is a fact. (Variable names as of Oct 2026 for the common stacks. Check them against your versions.) 2. Weights are an executable supply chain. Pickle-based checkpoint formats (.bin, .pt, .pkl) can run code when loaded. Security researchers have documented malicious models on public hubs. Inside the gap this is worse, not better, because your monitoring is thinner and your blast radius is "the box that has the GPU and the data". Rule: safetensors only, never trust_remote_code=True, hash every file at intake, verify the hash again on the inside, keep a provenance record. 3. Agents bring tools, and tools bring dependencies. An MCP server that calls a SaaS API, a Python package with telemetry, a container that pulls at start. Each tool needs its own least-privilege identity and its own allowlist entry. If it is not on the list, it does not run. The workflow that holds up is boring and I recommend it: intake zone outside the gap (download, reject unsafe formats, hash, scan, write a manifest), a transfer step with a second person, a verify step inside, then promotion into an internal registry. Serving images get built outside, saved as a tarball, loaded inside. Nothing pulls anything, ever.