You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Custom components in published manifest-only connectors are rejected in Cloud since 7.23.7 #1082
CDK 7.23.7 broke every published manifest-only connector that bundles a components.py, in any environment that does not set AIRBYTE_ENABLE_UNSAFE_CODE=true — including Airbyte Cloud. spec still works, but check, discover, and read all fail immediately with:
airbyte_cdk.sources.declarative.parsers.custom_code_compiler.AirbyteCustomCodeNotPermittedError:
Custom connector code is not permitted in this environment.
Root cause
#1076 added an unconditional gate in ModelToComponentFactory.create_custom_component:
Before that change, the AIRBYTE_ENABLE_UNSAFE_CODE gate applied only to components.py code injected through the config (__injected_components_py), i.e. untrusted, user-supplied code from Connector Builder / a remote manifest. Code baked into a published connector image was trusted.
The new gate does not distinguish provenance, so a manifest-only connector shipping its own manifest.yaml + components.py inside its own image is now rejected too.
Impact
Any manifest-only connector whose manifest references a Custom* component. In the monorepo, 56 connectors bundle a components.py; 4 are already published on base image source-declarative-manifest:7.23.7 and are broken in Cloud today:
source-chargebee (0.10.41)
source-bing-ads
source-greenhouse
source-apify-dataset
27 more are on 7.23.6 and will break on their next automated dependency bump.
Example failure (source-chargebee 0.10.41, whose manifest uses CustomTransformation -> source_declarative_manifest.components.CustomFieldTransformation on ~27 streams):
File ".../parsers/model_to_component_factory.py", line 2108, in create_default_stream
self._create_component_from_model(model=transformation_model, config=config)
File ".../parsers/model_to_component_factory.py", line 1822, in create_custom_component
raise AirbyteCustomCodeNotPermittedError
Downstream destinations then fail with Input was fully read, but some streams did not receive a terminal stream status message, which obscures the real cause.
Proposed fix
Restore the provenance distinction: apply the gate only when the manifest itself came from the config (__injected_declarative_manifest present), which is the untrusted case that PR #1076 set out to protect. Image-bundled manifests keep working without AIRBYTE_ENABLE_UNSAFE_CODE.
Affected connectors additionally need a rebuild onto the fixed CDK release once it ships.
Filed by Devin at the request of Syed Khadeer (syed.khadeer@airbyte.io) while triaging a broken production Chargebee -> BigQuery connection.
Corrected blast radius: 19 connectors are broken in Airbyte Cloud right now, not 4
The original list was taken from a monorepo checkout. Checking the live registry (https://connectors.airbyte.com/files/metadata/airbyte/<connector>/latest/oss.json) for every manifest-only connector that bundles a components.py, these 19 are published on source-declarative-manifest:7.23.7and reference Custom* components in their manifest, so check/discover/read fail in any environment without AIRBYTE_ENABLE_UNSAFE_CODE:
connector
published version
Custom* refs in manifest
source-apify-dataset
2.2.53
2
source-bing-ads
3.0.4
20
source-chargebee
0.10.41
54
source-google-search-console
2.1.6
36
source-greenhouse
0.7.30
6
source-instagram
4.2.36
24
source-klaviyo
2.19.1
21
source-linkedin-ads
5.6.11
102
source-monday
2.5.15
7
source-nexus-datasets
0.1.12
4
source-notion
4.0.17
7
source-outreach
1.1.38
34
source-paypal-transaction
2.6.41
2
source-pinterest
2.2.8
4
source-pylon
0.0.16
2
source-qualaroo
0.4.53
4
source-recurly
1.3.57
2
source-retently
0.3.53
2
source-slack
3.2.15
3
A further 13 such connectors are still on 7.23.6 and will break at their next automated base-image bump.
Support tickets are already arriving for chargebee, bing-ads and notion. Per-customer version pins work as a stopgap (verified on chargebee 0.10.41 -> 0.10.40), but all 19 need a rebuild once the fix in #1083 is released, and it may be worth pausing the base-image bump automation until then.
Activity
devin-ai-integration commentedon Jul 28, 2026
Corrected blast radius: 19 connectors are broken in Airbyte Cloud right now, not 4
The original list was taken from a monorepo checkout. Checking the live registry (
https://connectors.airbyte.com/files/metadata/airbyte/<connector>/latest/oss.json) for every manifest-only connector that bundles acomponents.py, these 19 are published onsource-declarative-manifest:7.23.7and referenceCustom*components in their manifest, socheck/discover/readfail in any environment withoutAIRBYTE_ENABLE_UNSAFE_CODE:Custom*refs in manifestA further 13 such connectors are still on 7.23.6 and will break at their next automated base-image bump.
Support tickets are already arriving for chargebee, bing-ads and notion. Per-customer version pins work as a stopgap (verified on chargebee 0.10.41 -> 0.10.40), but all 19 need a rebuild once the fix in #1083 is released, and it may be worth pausing the base-image bump automation until then.
Reported by Syed Khadeer (syed.khadeer@airbyte.io).
Devin session