Skip to content

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.

RuleApplies 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;
  • Authorization and Proxy-Authorization values, Bearer and Basic tokens, JSON Web Tokens, and cloud request signatures;
  • values of names such as token, key, secret, password and signature in 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 ​

LimitValue
Package file size50 MB
Unpacked package size100 MB
Files in a package2000
One file in a package25 MB
Package index file2 MB
Time to start a package process15 s
Default time for a call30 s
Time for one sync segment600 s default, 1800 s at most
Idle package processstopped after 10 min

HTTP requests made for a package ​

LimitValue
Redirects followed5
Timeout of a request60 s at most
Response size25 MB
Time for an OAuth token or sign-in call to the vendor15 s
Token response size64 KB
File size a source reads20 MB

SQL connectors ​

LimitDefaultMaximum
Rows per statement10050,000
Result size256 KB8 MB
Text in one cell8 KB, longer text is cut1 MB if the request asks for more
Time per statement15 s60 s
Statement length20,000 characters
Parameters per statement100 (64 KB in all)
Tables listed per request2001,000
Statements in flight2 per call, 4 per connector, 32 per Console process
Pool connections per connector310
Connections per tenant16
Connection attempt8 s each, 15 s in all
Failed connection attempts6 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 ​

LimitValue
Sends10 per minute and 60 per hour per connector; 30 per minute and 300 per hour per tenant
Identical messageThe 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.
Recipients25 at most (10 by default)
Subject200 characters
Text body100,000 characters
HTML body100,000 bytes
Whole message1 MB
Mail sessions at once2 per connector, 6 per tenant
Connection attempts20 per minute per connector; 6 failed per minute per connector, 20 per tenant
Reaching the server10 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.

SettingDefaultRange
Read limit32 KB1 to 128 KB
Maximum write size256 KB1 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 ​

LimitValue
Filters of a source32 KB
Checkpoints of a source256 KB
Segments per run12
Documents a run removes by itselfAt most 5 and 20% of the source; more is held
Wait a vendor may ask for60 s; longer ends the run
Concurrent sync jobs per node16

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.

ConnectorThe audit line carriesIt never carries
SQLThe operation, the engine and statement kind, a short hash of the statement, the number of parameters, rows, bytes and cut columns, the address familyThe statement text, parameter values, addresses
MailThe operation, the TLS mode, the number of recipients and recipient domains, a hash of the recipients, the message size, accepted and rejected countsAddresses, subject and body text

Studio · Pulse · Console · Agent SDK and more — the Cognipeer documentation hub