Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -265,7 +265,7 @@ Most `/api` requests also pass through Next.js Proxy. The current app configurat
The app makes outbound calls to model providers, integration APIs, your email provider, object storage, and your telemetry backend. Whether `HTTP_PROXY` / `HTTPS_PROXY` apply depends on which of those paths a call takes — there is no single answer, and no global setting that covers all of them.
The server runs on Bun, and Bun's native `fetch` honors `$HTTP_PROXY`, `$HTTPS_PROXY`, and `$NO_PROXY`. Sim installs no global dispatcher. Default `fetch` uses the configured proxy unless `NO_PROXY` excludes the destination. The SSRF guard reads the same three variables, with the same rules, for every request it sends. The rest either build their own HTTP agent or speak a non-HTTP protocol.
The server runs on Bun, and Bun's native `fetch` honors `$HTTP_PROXY`, `$HTTPS_PROXY`, and `$NO_PROXY`. Sim installs no global dispatcher. Default `fetch` uses the configured proxy unless `NO_PROXY` excludes the destination. The SSRF guard reads the same three variables for every request it sends, matching `NO_PROXY` the way curl does (see [Internal destinations and `NO_PROXY`](#internal-destinations-and-no_proxy)). The rest either build their own HTTP agent or speak a non-HTTP protocol.
This depends on the runtime. The published images run Bun. If you build the standalone output and run it under Node instead, Node ignores these variables unless started with `NODE_USE_ENV_PROXY=1` (Node 22.21+ / 24.5+), and the `fetch`-based "Yes" rows stop being proxied — model providers, Resend, Gmail sending, the desktop update feed, and the telemetry relay. The Azure Blob, GCS and Azure Communication Services rows still hold: those SDKs read the proxy variables through their own agents rather than through `fetch`. See [Bun fetch](https://bun.sh/docs/runtime/networking/fetch) and [Node proxy configuration](https://nodejs.org/learn/http/enterprise-network-configuration).
Expand Down
5 changes: 2 additions & 3 deletions apps/sim/lib/core/security/redaction.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,8 @@ describe('isSensitiveKey', () => {
'exa_api_key',
'secretAccessKey',
'awsSecretAccessKey',
'secretKey',
'bedrockSecretKey',
'deployKey',
'convexDeployKey',
`${'a'.repeat(10000)}password`,
])('treats %s as sensitive', (key) => {
expect(isSensitiveKey(key)).toBe(true)
Expand All @@ -42,7 +41,7 @@ describe('isSensitiveKey', () => {
it.concurrent.each([
'tokenCount',
'tokenizer',
'secretKeyId',
'secretKey',
'deployKeyName',
'passwordStrength',
'authMethod',
Expand Down
5 changes: 2 additions & 3 deletions apps/sim/lib/core/security/redaction.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,8 @@ const SENSITIVE_KEY_PATTERNS: RegExp[] = [
/^.*api[_-]?key$/i,
// AWS's `secretAccessKey` / `awsSecretAccessKey`, which no suffix above covers.
/^.*secret[_-]?access[_-]?key$/i,
// Credential fields named for the key itself: Clerk's `secretKey`, Bedrock's
// `bedrockSecretKey`, and Convex's `deployKey`.
/^.*secret[_-]?key$/i,
// Convex's `deployKey`. A bare `secretKey` is left out: Infisical returns each
// secret's name in that field, and redacting it would hide every listed name.
/^.*deploy[_-]?key$/i,
Comment on lines +32 to 34

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 security Bedrock keys appear in logs

Removing the whole secretKey suffix pattern also stops hiding bedrockSecretKey, which holds an AWS secret access key. When a user types that key directly into a Bedrock block, the resolver keeps the literal value and the block logger passes it through redactApiKeys. The key now appears in logged inputs and the console.

Keep bare secretKey visible for Infisical, but retain coverage for credential fields such as bedrockSecretKey and restore its regression test.

How this was verified: The Bedrock password field flows into logged block inputs, while the placeholder projection preserves directly typed values and the remaining key patterns do not match bedrockSecretKey.

/^passphrase$/i,
/^authorization$/i,
Expand Down
Loading