docs/private-networking/troubleshooting.mdx
This page collects common issues when adding a private connection. If your problem isn't listed here, get in touch.
If the setup wizard errors out with Private link not found when you submit the VPC Endpoint Service name, it almost always means your endpoint service has not been shared with Trigger.dev's AWS account.
Trigger.dev cannot provision a VPC Endpoint until your endpoint service explicitly authorizes our AWS account as a consumer. Until that happens, the service name is invisible to us — even though the name itself is correct.
```text
arn:aws:iam::<account-id>:root
```
<Warning>
Always copy the account ID from your Trigger.dev dashboard. The correct value differs between
environments — don't reuse an ID from another source.
</Warning>
For full setup instructions including this step, see Setting up PrivateLink in the AWS Console.
If your private connection shows Active in the Trigger.dev dashboard and the NLB target group reports healthy targets, but tasks still cannot reach the assigned IP, the most common cause is that your Network Load Balancer is enforcing security group rules on PrivateLink traffic.
When a security group is attached to an NLB, AWS exposes a separate setting called Enforce inbound rules on PrivateLink traffic. When this is on, the NLB applies its security group's inbound rules to traffic arriving from VPC endpoints — and the source IP it evaluates is the private IP of the consumer's VPC endpoint network interface, not an IP in your own VPC. Because that IP belongs to Trigger.dev's VPC and isn't known ahead of time, the SG rule almost never matches, and traffic is silently dropped at the NLB.
<Note>
This only changes how the NLB itself filters traffic. Authorization is still enforced by the
endpoint service's **Allow principals** list, so only AWS accounts you've explicitly
allow-listed can connect.
</Note>
If you need to keep the enforcement on for compliance reasons, the alternative is to widen your NLB's security group inbound rule to 0.0.0.0/0 on the listener port. Allow-listing the consumer endpoint's CIDR is not practical because it lives in Trigger.dev's VPC and may change.