Skip to content

fix(runtime): treat a blank implicit agent-configuration variable as unset - #1207

Merged
gastonyelmini merged 1 commit into
mainfrom
INT-13165-2
Aug 18, 2026
Merged

fix(runtime): treat a blank implicit agent-configuration variable as unset#1207
gastonyelmini merged 1 commit into
mainfrom
INT-13165-2

Conversation

@gastonyelmini

Copy link
Copy Markdown
Contributor

Problem

17.6.0 (#1203) made caCertificate and disableTlsVerification implicit, so every integration now reads them from the environment whether or not it declared them.

The conversion those values go through is unchanged since the original 2020 commit: an environment variable set to an empty string is not undefined, so it never reaches the config.optional branch and instead falls through to type conversion. For a boolean, anything that is not exactly true or false throws IntegrationLocalConfigFieldTypeMismatchError — which, on a field consulted before the first step runs, aborts the whole run.

Nothing is producing blank values today. The 16 integrations that declare disableTlsVerification run fine in production, so the platform omits the variable rather than writing it empty. What changed in 17.6.0 is the exposure: from those 16 integrations to all 88, none of which asked for the field.

Change

A blank (or whitespace-only) value is treated as unset for a field the integration did not declare. Once an integration declares the field it owns the contract, so a value it cannot parse stays an error rather than being silently ignored.

Also

Replaces the precedence test added in #1203. It declared caCertificate as { type: 'string' } — the same shape as the implicit definition — with the environment variable set, so it produced an identical result either way and would have passed without the merge it was meant to cover. The declaration is now observable: declared without optional and with no environment variable set, the loader has to throw instead of resolving to undefined.

Testing

packages/integration-sdk-runtime is green, 305/305. The two new blank-value tests were confirmed to fail with the guard removed and the rest of the suite still passing, so they are pinned to this behaviour rather than passing incidentally.

…unset

17.6.0 made caCertificate and disableTlsVerification implicit, so every
integration now reads them from the environment whether or not it declared
them. The conversion those values go through is unchanged since 2020: an
environment variable set to an empty string is not undefined, so it never
reaches the optional branch and instead fails type conversion. For a boolean
that throws IntegrationLocalConfigFieldTypeMismatchError and aborts the run
before the first step.

Nothing is producing blank values today — the 16 integrations that declare
disableTlsVerification run fine, so the platform omits the variable rather
than writing it empty — but the exposure went from those 16 to all 88, none
of which asked for the field. Treat a blank value as unset for a field the
integration did not declare; a declared field keeps the current behaviour,
since there the integration owns the contract.

Also replaces the precedence test from #1203, which declared the field with
the same shape as the implicit definition and so passed either way. The
declaration is now observable: declared without `optional` and with no
environment variable set, the loader must throw rather than resolve to
undefined.
@gastonyelmini
gastonyelmini requested a review from a team as a code owner August 18, 2026 16:57
@gastonyelmini
gastonyelmini merged commit ac964be into main Aug 18, 2026
5 checks passed
@gastonyelmini
gastonyelmini deleted the INT-13165-2 branch August 18, 2026 18:00
@gastonyelmini gastonyelmini mentioned this pull request Aug 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants