Connector security and limits
How connectors store credentials, which destinations they may reach, what is redacted and logged, and the limits that apply to their calls.
Enterprise module
Connectors are an enterprise module. Every connector request checks the workspace's live licence. Without an active Enterprise licence, or when the Connectors or Tools service is switched off, the request is refused with 402 and the message Connectors require an active ENTERPRISE license.
A connector package is code that Console runs for you. Console keeps the secrets, makes the network connections and checks every request. The package only describes what to ask for.
Credentials
- An account credential (an OAuth token, an API key, a database password) and an OAuth app's client secret are encrypted before they are stored.
- The dashboard and the API never return a stored secret. They show a hint:
…followed by the last 4 characters, or…alone for a value shorter than 8 characters. If you send a hint back in a form, Console refuses it: Enter the full value, not the hint that is shown. - The package never receives the secret as plain data to keep. Console adds the credential to the request it makes, and for SQL and mail Console opens the connection itself. A package never sees a database or mail password.
- If a stored credential cannot be read (for example after a key change), the connector asks you to connect the account again: The stored credential cannot be read. Connect the account again.
- OAuth sign-ins use the OAuth app that a tenant owner or admin registered under OAuth apps. A sign-in link is valid for 10 minutes and only in the project where it was started.
Where calls may go
A connector reaches only the destinations its package declares and the settings allow. Console checks the address the connection will actually use, not only the name in the request.
| Rule | Applies to |
|---|---|
| Requests use HTTPS to hosts the package lists, on port 443 unless the entry names a port. | All installs |
| A server you enter in the connector's settings can be reached on the port you entered. | All installs |
A plain http address for a server you entered is accepted. | On-prem only |
| Loopback, link-local (including cloud metadata addresses), unspecified, multicast and reserved addresses are refused. | All installs |
| Private ranges (for example 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, carrier-grade NAT, unique-local IPv6) are refused. | SaaS |
| Private ranges are reachable for a server you entered, if the package declares it supports a private network. | On-prem only |
| Object storage servers are refused on the ports of well-known infrastructure services (databases, caches, queues, cluster APIs, remote desktop). | SaaS |
| SQL TLS modes Encrypted, check nothing and Not encrypted are not available. | SaaS |
How a name is checked:
- Console resolves the name itself, checks every address it returns, and connects only to the addresses it checked. If any address is refused, the host is refused.
- A literal IP address in a URL is checked the same way.
- A name that does not resolve is reported as an unreachable server, not as a policy refusal.
An on-prem operator can narrow the private ranges that are reachable by setting CONNECTOR_EGRESS_PRIVATE_CIDRS on the Console server to a comma-separated list of CIDR ranges. An address outside the list is then refused.
A refused destination returns EGRESS_DENIED. On SaaS, SQL and mail errors about the network are shortened to a single text, so a call does not reveal what is behind an address. On-prem Consoles keep more detail. See Troubleshoot connectors.
Read-only calls
A connector action marked read-only cannot change data at the vendor:
- Read-only HTTP calls use read methods. A POST is allowed only to the paths the package lists as read POSTs, such as search endpoints that carry their query in the body.
- On GraphQL paths a read-only call may carry queries only. A mutation or subscription is refused.
- A request that carries a method-override header or parameter is refused.
- Storage packages may send only the request shapes their profile lists. Operations outside it, such as access-control changes, are refused whatever the package asks for.
- SQL connectors accept read-only statements only, and mail connectors build the message themselves from the connector's fixed sender.
A refusal returns POLICY_DENIED.
Whether an agent may run a tool that is not read-only is a separate decision. See Tools and approvals.
Secrets in results and logs
Before text from a connector reaches a log line, a stored error, a sync run message or a tool result, Console removes secrets from it and writes [redacted] in their place:
- the values of the account's own credential, also in URL-encoded form;
- private key blocks;
AuthorizationandProxy-Authorizationvalues,BearerandBasictokens, JSON Web Tokens, and cloud request signatures;- values of names such as
token,key,secret,passwordandsignaturein a query string, a form body or a JSON member.
Error messages are cut: tool errors to 300 characters, SQL driver text to 300, mail server text to 200, and a sync run's error message to 500.
Limits and timeouts
Package and runtime
| Limit | Value |
|---|---|
| Package file size | 50 MB |
| Unpacked package size | 100 MB |
| Files in a package | 2000 |
| One file in a package | 25 MB |
| Package index file | 2 MB |
| Time to start a package process | 15 s |
| Default time for a call | 30 s |
| Time for one sync segment | 600 s default, 1800 s at most |
| Idle package process | stopped after 10 min |
HTTP requests made for a package
| Limit | Value |
|---|---|
| Redirects followed | 5 |
| Timeout of a request | 60 s at most |
| Response size | 25 MB |
| Time for an OAuth token or sign-in call to the vendor | 15 s |
| Token response size | 64 KB |
| File size a source reads | 20 MB |
SQL connectors
| Limit | Default | Maximum |
|---|---|---|
| Rows per statement | 100 | 50,000 |
| Result size | 256 KB | 8 MB |
| Text in one cell | 8 KB, longer text is cut | 1 MB if the request asks for more |
| Time per statement | 15 s | 60 s |
| Statement length | 20,000 characters | |
| Parameters per statement | 100 (64 KB in all) | |
| Tables listed per request | 200 | 1,000 |
| Statements in flight | 2 per call, 4 per connector, 32 per Console process | |
| Pool connections per connector | 3 | 10 |
| Connections per tenant | 16 | |
| Connection attempt | 8 s each, 15 s in all | |
| Failed connection attempts | 6 per minute per connector, 20 per minute per tenant |
A package can lower these limits. The connector's own settings (for example Rows per query and Time limit per statement (seconds)) lower them further. See Database connectors.
Mail connectors
| Limit | Value |
|---|---|
| Sends | 10 per minute and 60 per hour per connector; 30 per minute and 300 per hour per tenant |
| Identical message | The same message to the same recipients is sent once. A repeat within 60 s is refused with CONFLICT. After a failure that may have reached the server, the repeat is held for 10 min. |
| Recipients | 25 at most (10 by default) |
| Subject | 200 characters |
| Text body | 100,000 characters |
| HTML body | 100,000 bytes |
| Whole message | 1 MB |
| Mail sessions at once | 2 per connector, 6 per tenant |
| Connection attempts | 20 per minute per connector; 6 failed per minute per connector, 20 per tenant |
| Reaching the server | 10 s; greeting 10 s; idle socket 30 s; the whole request 45 s |
See Email connectors.
Object storage connectors
Object storage packages offer these settings. The values are defaults and ranges of the storage packages.
| Setting | Default | Range |
|---|---|---|
| Read limit | 32 KB | 1 to 128 KB |
| Maximum write size | 256 KB | 1 to 1024 KB |
A storage source also reads files up to 10 MB by default and 20 MB at most. See Object storage connectors.
Knowledge sources
| Limit | Value |
|---|---|
| Filters of a source | 32 KB |
| Checkpoints of a source | 256 KB |
| Segments per run | 12 |
| Documents a run removes by itself | At most 5 and 20% of the source; more is held |
| Wait a vendor may ask for | 60 s; longer ends the run |
| Concurrent sync jobs per node | 16 |
A run that shows no sign of life for 3 minutes is ended as failed. A queued run that does not start within 15 minutes is ended as failed.
Logs and audit
Console writes a log line for connector events: a connector created or deleted, an account connected or disconnected, an OAuth app saved or removed, a package skipped at load, and a sync that failed.
SQL and mail calls also write one audit line each, with the outcome (ok, refused or error) and the error class.
| Connector | The audit line carries | It never carries |
|---|---|---|
| SQL | The operation, the engine and statement kind, a short hash of the statement, the number of parameters, rows, bytes and cut columns, the address family | The statement text, parameter values, addresses |
| The operation, the TLS mode, the number of recipients and recipient domains, a hash of the recipients, the message size, accepted and rejected counts | Addresses, subject and body text |

