September 15, 2026
How we stop pasted links reaching places they should not
Some genvi features download a link you give us. Here is how one safety check keeps every such link pointed at the public internet only.

Several features in genvi download a link you give us. It might be a character image for a sprite sheet, a voice preview, or a picture to show back to you. That is useful, but it is also risky. This is how we make sure a link from outside can only ever lead to the public internet. The risk has a technical name, SSRF, which means tricking a server into visiting a place it should not.
The problem with fetching any link
If our server simply fetches whatever link it is given, someone could give it a link to a private place. That might be our cloud provider's internal service, a database on the same machine, or another computer on the private network. Our server can reach all of those, so it would go and look. That turns a harmless download feature into a way to read things the person was never meant to see.
Our rule for the team is blunt: any download of a link from outside must go through our one safe download check. Never download from a link directly.
What the safe download checks
We kept the checks simple enough for a reviewer to hold in their head. Every request is checked before it is sent, and again when the connection is made.
- The link itself. Secure links only, unless a feature clearly allows otherwise. No passwords inside the link. Normal ports only. A feature can also limit which sites are allowed.
- The address behind the name. We look up where the name points, and it must be a public address. Private, internal and reserved addresses are refused, including tricky forms that hide a private address inside a longer one.
- Every answer. A name that points to one public and one private address is refused. One bad answer is enough.
- The connection. The same check runs again at the moment of connecting, and we connect only to the address we already checked. This stops a name that shows a safe address to the check and a private one to the connection.
- Redirects. A link can say "go here instead". We follow these by hand, up to 3 times, and check every step as if it were the first. Sign-in details are dropped if a redirect goes to a different site.
- Size and time. A download has a size limit (25 MB by default) and a time limit (15 seconds by default). If a file says it is too big, we refuse it before reading. If it grows too big while downloading, we cut it off.
Two choices worth naming
Redirects are the usual weak spot. A check that looks at only the first link has checked nothing, because a public address can send you on to a private one. Following redirects by hand is more work, but it is the only way every step gets the same check. Our tests cover this directly: a redirect to a private address is refused and never visited.
Error messages say very little. When we refuse a link, our own code gets a reason, but you get a short, safe message. A feature that has no usable image simply says so, without naming the address. A check that explains exactly which internal place it blocked would help an attacker map our private network.

A campus with one gate: one place to check who comes in. Made with Grok Imagine 2.0.
Where it is used
Every feature that downloads a link for you uses it, along with our generation engine and all five of our AI provider connections. We also merged several separate lists of allowed web addresses into one shared list. For our own storage, a trusted site can skip some checks, because our local development database runs on an internal address. The match must be exact, and any redirect away from it is checked like any other link.
How we make sure it stays safe
There are four sets of automatic tests. They cover the address rules, link rules, allowed-site lists, redirects, size limits and time limits, without needing a real network. They also test the real features. The voice preview refuses a site that points to a private address, and refuses a redirect into the private network. The same goes for the AI provider connections and the generation engine.
These checks describe behaviour rather than a list of bad addresses, so they keep working when a new trick appears. When one does, we fix the rule and add a test next to it.
If you build anything that downloads what a user tells it to, put the check in one place. Make it impossible to skip, and test the redirect path first.