Security
How Junction keeps your construction data safe
It can only read
Junction only ever asks your systems to read: it builds read queries (SELECT for databases, GET for web APIs) and has no code path that creates, edits or deletes anything. We also ask you to give it a database login or API key with read permission only, so that even a flaw on our side could not write.
Questions never become raw SQL
The values in a question are always passed to the database as bound parameters, never pasted into SQL text, and the SQL itself is built only from field and table names in a data model we maintain. A question such as “jobs where name = '; drop table…” is treated as a harmless piece of text. For systems inside your network, our cloud sends the agent a structured request, never SQL, and the agent has no way to run SQL it receives.
The agent only dials out, and only runs signed models
- The agent on your server connects outward over HTTPS, so you open no inbound firewall ports.
- It builds queries only from a data model whose digital signature it verifies; a modified model is refused.
- You can revoke an agent in the portal, and it is disconnected within seconds. It runs from a copy of your data refreshed on a schedule when the source is slow or fragile, so the live system is not queried.
Payroll and personal data are excluded by default
Payroll and personal fields are refused in questions, filters and calculations, and are invisible to the AI in the data catalogue. This is enforced on our server for every request, not left to the AI to follow.
Each company is separate, and each person gets only what you allow
- Every request carries the identity of the person asking, and a system is visible only to its own company. Another company’s system looks the same as one that does not exist.
- Within your company, administrators choose which systems, kinds of data and jobs each person can reach. These limits are applied to every query and again when a long result is paged.
- A company whose subscription lapses gets no data.
Sign-in and tokens
- AI tools connect using the OAuth 2.1 standard with mandatory PKCE, exact-match redirect addresses and tokens bound to our server.
- Access tokens are short-lived (one hour) and stored only as hashes. Refresh tokens rotate, and reuse of an old one revokes the whole chain.
- Your AI tool’s token is never passed on to your other systems.
- People sign in with their Junction portal account (email and password, or Google), which supports password reset and two-step verification with an authenticator app (such as Google Authenticator). Two-step verification is required for company administrators, and connecting an AI tool asks for it too.
Your credentials
Database logins and API keys you enter in the portal are encrypted before they are stored and are never shown again, to you or to us. We refuse connection addresses that point at private or internal networks, so a mistyped or malicious address cannot be used to reach anything it should not. Error messages shown to the AI never contain driver errors, hostnames or secrets.
What we log
An audit log records who used which tool, system and kind of data, the outcome, row counts and timing, and administrative changes. It never records the values you asked for or the data returned. Logs are kept for 400 days by default.
What we have not done yet
We would rather you hear this from us.
- We have not completed a SOC 2 audit or other third-party certification.
- We have not yet had an independent penetration test.
- Our connectors have been tested against realistic simulated systems; each real system is validated with a design partner before we call it live.
- Customer-hosted deployment, where credentials and data stay in your own cloud, is planned and not yet available.
Questions or a security review
Email sales@junction.co to ask for our security questionnaire answers or a call with an engineer, or reach out to sales. To report a vulnerability, email legal@junction.co; please give us reasonable time to fix it before disclosing it.