Repository: meltano/meltano (language: python)

Issue:
feature: Add a `--refresh` option for `meltano select` to refresh a new copy of the discovered catalog
This feature would add a `--refresh` option, or similar CLI arg to the `meltano select` CLI command. https://docs.meltano.com/reference/command-line-interface#select

```
# Refresh the cached catalog by re-running discovery
meltano select tap-github --refresh

# Print the normal --list output *after* refreshing the catalog
meltano select tap-github --list --refresh
```

This would give users the ability to force a refresh of the cached `catalog.json` file.

## Related

- https://github.com/meltano/meltano/issues/6915
- https://github.com/meltano/meltano/issues/6763
- https://github.com/meltano/meltano/discussions/6757#discussioncomment-3650870

feat: Ignore Catalog Cache
closes #6919

* Adds `no_catalog_cache` to config extras, so that a single plugin can be run every time without the catalog cache.
* Adds `--catalog-refresh` option to `meltano select` and `meltano el`

Adding a new extra seems extreme, but I don't know how else to implement this where it could be used as part of a job for any tap. If there's a better way to do it, I'm happy to adjust this based on feedback.
Authentication for Meltano Analyze
Migrated from GitLab: https://gitlab.com/meltano/meltano/-/issues/1

Originally created by @joshlambert on 2018-07-25 16:40:57

---

We need to add user authentication to Meltano Analyze. As an MVC we should:
1. Support OAuth with GitLab (others are a bonus, but no need to test for now)

Implement social login (GitLab only for now) with [Flask Security](https://pythonhosted.org/Flask-Security/)


Discussion / hints:
This has been marked as stale because it is unassigned, and has not had recent activity. It will be closed after 21 days if no further activity occurs. If this should never go stale, please add the `evergreen` label, or request that it be added.

Since the ‎[SingerTap.catalog_cache_key explicitly‎ ignores selection filter rules update](https://github.com/meltano/meltano/blob/265b61e4a80d1f3ba297fd688bc2a9e85269449f/src/meltano/core/plugin/singer/tap.py#L603), this feature would be nice to have instead of manual unlinking of .meltano/run dir before running select --list
For anyone interested in taking a looking at this, the caching logic lives in https://github.com/meltano/meltano/blob/ab6e2d9607291be1ce994e9ada34057045374c54/src/meltano/core/plugin/singer/tap.py#L362-L371
Another user ran into this, with tap-salesforce this time: https://www.linen.dev/s/meltano/t/16176363/tap-salesforce-not-adding-new-columns#242718da-e029-470b-a9bb-37e110669d4d.
Hello all, 
It was me who ran into the issue. Is this --refresh command an acceptable solution to be taken into consideration ?
As described above I think the refresh would be enough. As I understood the list takes then the cached catalog anyway.


> Hello all, It was me who ran into the issue. Is this --refresh command an acceptable solution to be taken into consideration ? As described above I think the refresh would be enough. As I understood the list takes then the cached catalog anyway.

@isoctcolo I think it is acceptable. The idea is that the `--refresh` flag would force the catalog to be refreshed, disregarding whether a catalog exists or the cache key matches.
Ok I dig into the code - could take me some time but for me it is good practice to get to know meltano better

[View 12 previous comments from the original issue on GitLab](https://gitlab.com/meltano/meltano/-/issues/1)

Fix patch:
diff --git a/docs/docs/concepts/plugins.mdx b/docs/docs/concepts/plugins.mdx
index 7bd15f34f5..59f224bb13 100644
--- a/docs/docs/concepts/plugins.mdx
+++ b/docs/docs/concepts/plugins.mdx
@@ -154,6 +154,7 @@ Extractors support the following [extras](/guide/configuration#plugin-extras):
 - [`select`](#select-extra)
 - [`select_filter`](#select-filter-extra)
 - [`state`](#state-extra)
+- [`use_cached_catalog`](#cache-catalog-extra)
 
 #### `catalog` extra
 
@@ -631,6 +632,52 @@ export TAP_GITLAB__STATE=extract/tap-gitlab.state.json
   </TabItem>
 </Tabs>
 
+#### <a name="cache-catalog-extra"></a>`use_cached_catalog` extra
+
+- Setting: `_use_cached_catalog`
+- [Environment variable](/guide/configuration#configuring-settings): `<EXTRACTOR>__USE_CACHED_CATALOG`, e.g. `TAP_GITLAB__USE_CACHED_CATALOG`
+- Default: `True`
+
+An extractor's `use_cached_catalog` [extra](/guide/configuration#plugin-extras) is a boolean flag that, when set to `False`, disables the use of a cached catalog file during the extractor's discovery process. By default, Meltano will cache the catalog file generated by an extractor to speed up subsequent runs. However, if the extractor's schema has changed in a way that would affect discovery output, you may want to bypass the cache to ensure the latest catalog is used.
+
+Setting this extra to `False` forces the extractor to perform discovery and generate a new catalog file every time it runs, which can be useful during development or when an extractor supports dynamic catalog discovery, such as in [`tap-salesforce`](https://github.com/MeltanoLabs/tap-salesforce).
+
+##### How to use
+
+Manage this extra:
+
+<Tabs className="meltano-tabs" queryString="meltano-tabs">
+  <TabItem className="meltano-tab-content" value="meltano.yml" label="meltano.yml" default>
+
+```yaml
+extractors:
+- name: tap-gitlab
+  use_cached_catalog: false
+```
+
+  </TabItem>
+  <TabItem className="meltano-tab-content" value="terminal" label="terminal">
+
+```bash
+meltano config <extractor> set _use_cached_catalog false
+
+# For example:
+meltano config tap-gitlab set _use_cached_catalog false
+```
+
+  </TabItem>
+  <TabItem className="meltano-tab-content" value="env" label="env">
+
+```bash
+export <EXTRACTOR>__USE_CACHED_CATALOG=false
+
+# For example:
+export TAP_GITLAB__USE_CACHED_CATALOG=false
+```
+
+  </TabItem>
+</Tabs>
+
 ### Loaders
 
 Loaders are [pip packages](https://pip.pypa.io/en/stable/) used by [`meltano elt`](/reference/command-line-interface#elt) as part of [data integration](/guide/integration).
diff --git a/docs/docs/reference/command-line-interface.md b/docs/docs/reference/command-line-interface.md
index d291623f02..f41c60ae84 100644
--- a/docs/docs/reference/command-line-interface.md
+++ b/docs/docs/reference/command-line-interface.md
@@ -971,6 +971,7 @@ meltano --environment=<ENVIRONMENT> run tap-gitlab target-postgres
 meltano run tap-gitlab one-mapping another-mapping target-postgres
 meltano run tap-gitlab target-postgres simple-job
 meltano run --state-id-suffix=<STATE_ID_SUFFIX> tap-gitlab target-postgres
+meltano run --refresh-catalog tap-salesforce target-postgres
 ```
 
 #### Parameters
@@ -985,6 +986,7 @@ meltano run --state-id-suffix=<STATE_ID_SUFFIX> tap-gitlab target-postgres
 - `--state-id-suffix` define a custom suffix to generate a state ID with for each EL pair.
 - `--merge-state` will merge state with that of previous runs. See the [example in the Meltano repository](https://github.com/meltano/meltano/blob/main/integration/example-library/meltano-run-merge-states/index.md).
 - `--run-id` will use the provided UUID for the current run. This is useful when your workflow is managed by an external system and you want to track the run in Meltano.
+- `--refresh-catalog` will force a refresh of the catalog, ignoring any existing cached catalog from previous runs.
 
 Examples:
 
diff --git a/integration/meltano-manifest/expected-manifests/meltano-manifest.cicd.json b/integration/meltano-manifest/expected-manifests/meltano-manifest.cicd.json
index 2107f39cc6..33e18d6b11 100644
--- a/integration/meltano-manifest/expected-manifests/meltano-manifest.cicd.json
+++ b/integration/meltano-manifest/expected-manifests/meltano-manifest.cicd.json
@@ -199,6 +199,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"*.*\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_CLOUDWATCH_AWS_REGION_NAME": "us-west-2",
           "TAP_CLOUDWATCH_BATCH_INCREMENT_S": "3600",
           "TAP_CLOUDWATCH_LOG_GROUP_NAME": "API-Gateway-Execution-Logs_i32s35df22/prod",
@@ -207,7 +208,8 @@
           "TAP_CLOUDWATCH__METADATA": "{}",
           "TAP_CLOUDWATCH__SCHEMA": "{}",
           "TAP_CLOUDWATCH__SELECT": "[\"*.*\"]",
-          "TAP_CLOUDWATCH__SELECT_FILTER": "[]"
+          "TAP_CLOUDWATCH__SELECT_FILTER": "[]",
+          "TAP_CLOUDWATCH__USE_CACHED_CATALOG": "true"
         },
         "executable": "tap-cloudwatch",
         "label": "Cloudwatch",
@@ -375,11 +377,13 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"plugins.*\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_MELTANOHUB__LOAD_SCHEMA": "tap_meltanohub",
           "TAP_MELTANOHUB__METADATA": "{}",
           "TAP_MELTANOHUB__SCHEMA": "{}",
           "TAP_MELTANOHUB__SELECT": "[\"plugins.*\"]",
-          "TAP_MELTANOHUB__SELECT_FILTER": "[]"
+          "TAP_MELTANOHUB__SELECT_FILTER": "[]",
+          "TAP_MELTANOHUB__USE_CACHED_CATALOG": "true"
         },
         "label": "Meltanohub",
         "logo_url": "https://hub.meltano.com/assets/logos/extractors/meltanohub.png",
@@ -479,12 +483,14 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"*.*\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_SPREADSHEETS_ANYWHERE_TABLES": "[{\"path\": \"https://ip-ranges.amazonaws.com\", \"format\": \"json\", \"start_date\": \"2020-01-01T00:00:00Z\", \"key_properties\": [\"ip_prefix\"], \"name\": \"aws_ips\", \"pattern\": \"ip-ranges.json\", \"json_path\": \"prefixes\"}, {\"path\": \"https://www.gstatic.com/ipranges\", \"format\": \"json\", \"start_date\": \"2020-01-01T00:00:00Z\", \"key_properties\": [\"id\"], \"name\": \"gcp_ips\", \"pattern\": \"cloud.json\", \"json_path\": \"prefixes\"}, {\"path\": \"https://download.microsoft.com/download/7/1/D/71D86715-5596-4529-9B13-DA13A5DE5B63\", \"format\": \"json\", \"start_date\": \"2020-01-01T00:00:00Z\", \"key_properties\": [\"id\"], \"name\": \"azure_ips\", \"pattern\": \"ServiceTags_Public_20230116.json\", \"json_path\": \"values\"}]",
           "TAP_SPREADSHEETS_ANYWHERE__LOAD_SCHEMA": "tap_spreadsheets_anywhere",
           "TAP_SPREADSHEETS_ANYWHERE__METADATA": "{}",
           "TAP_SPREADSHEETS_ANYWHERE__SCHEMA": "{}",
           "TAP_SPREADSHEETS_ANYWHERE__SELECT": "[\"*.*\"]",
-          "TAP_SPREADSHEETS_ANYWHERE__SELECT_FILTER": "[]"
+          "TAP_SPREADSHEETS_ANYWHERE__SELECT_FILTER": "[]",
+          "TAP_SPREADSHEETS_ANYWHERE__USE_CACHED_CATALOG": "true"
         },
         "label": "Spreadsheets Anywhere",
         "logo_url": "https://hub.meltano.com/assets/logos/extractors/spreadsheets-anywhere.png",
@@ -540,6 +546,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"users.*\", \"channels.*\", \"messages.*\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_SLACK_AUTO_JOIN_CHANNELS": "false",
           "TAP_SLACK_CHANNEL_TYPES": "[\"private_channel\"]",
           "TAP_SLACK_SELECTED_CHANNELS": "[\"C01SK13R9NJ\"]",
@@ -548,7 +555,8 @@
           "TAP_SLACK__METADATA": "{}",
           "TAP_SLACK__SCHEMA": "{}",
           "TAP_SLACK__SELECT": "[\"users.*\", \"channels.*\", \"messages.*\"]",
-          "TAP_SLACK__SELECT_FILTER": "[]"
+          "TAP_SLACK__SELECT_FILTER": "[]",
+          "TAP_SLACK__USE_CACHED_CATALOG": "true"
         },
         "label": "Slack",
         "logo_url": "https://hub.meltano.com/assets/logos/extractors/slack.png",
@@ -707,6 +715,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"channels.*\", \"messages.*\", \"threads.*\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_SLACK_AUTO_JOIN_CHANNELS": "false",
           "TAP_SLACK_CHANNEL_TYPES": "[\"public_channel\"]",
           "TAP_SLACK_PUBLIC_AUTO_JOIN_CHANNELS": "false",
@@ -718,13 +727,15 @@
           "TAP_SLACK_PUBLIC__SCHEMA": "{}",
           "TAP_SLACK_PUBLIC__SELECT": "[\"channels.*\", \"messages.*\", \"threads.*\"]",
           "TAP_SLACK_PUBLIC__SELECT_FILTER": "[]",
+          "TAP_SLACK_PUBLIC__USE_CACHED_CATALOG": "true",
           "TAP_SLACK_SELECTED_CHANNELS": "[]",
           "TAP_SLACK_THREAD_LOOKBACK_DAYS": "1",
           "TAP_SLACK__LOAD_SCHEMA": "tap_slack_public",
           "TAP_SLACK__METADATA": "{}",
           "TAP_SLACK__SCHEMA": "{}",
           "TAP_SLACK__SELECT": "[\"channels.*\", \"messages.*\", \"threads.*\"]",
-          "TAP_SLACK__SELECT_FILTER": "[]"
+          "TAP_SLACK__SELECT_FILTER": "[]",
+          "TAP_SLACK__USE_CACHED_CATALOG": "true"
         },
         "inherit_from": "tap-slack",
         "name": "tap-slack-public",
@@ -758,13 +769,15 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"*.*\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_GOOGLE_ANALYTICS_REPORTS": "./extract/ga_reports/cli_events_report_definition.json",
           "TAP_GOOGLE_ANALYTICS_VIEW_ID": "188392047",
           "TAP_GOOGLE_ANALYTICS__LOAD_SCHEMA": "tap_google_analytics",
           "TAP_GOOGLE_ANALYTICS__METADATA": "{}",
           "TAP_GOOGLE_ANALYTICS__SCHEMA": "{}",
           "TAP_GOOGLE_ANALYTICS__SELECT": "[\"*.*\"]",
-          "TAP_GOOGLE_ANALYTICS__SELECT_FILTER": "[]"
+          "TAP_GOOGLE_ANALYTICS__SELECT_FILTER": "[]",
+          "TAP_GOOGLE_ANALYTICS__USE_CACHED_CATALOG": "true"
         },
         "label": "Google Analytics (Universal Analytics API - Deprecated)",
         "logo_url": "https://hub.meltano.com/assets/logos/extractors/google-analytics.png",
@@ -910,6 +923,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"projects.*\", \"merge_requests.*\", \"issues.*\", \"!issues.description\", \"!issues.title\", \"!merge_requests.description\", \"!merge_requests.title\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_GITLAB_API_URL": "https://gitlab.com",
           "TAP_GITLAB_FETCH_MERGE_REQUEST_COMMITS": "false",
           "TAP_GITLAB_FETCH_PIPELINES_EXTENDED": "false",
@@ -921,7 +935,8 @@
           "TAP_GITLAB__METADATA": "{}",
           "TAP_GITLAB__SCHEMA": "{}",
           "TAP_GITLAB__SELECT": "[\"projects.*\", \"merge_requests.*\", \"issues.*\", \"!issues.description\", \"!issues.title\", \"!merge_requests.description\", \"!merge_requests.title\"]",
-          "TAP_GITLAB__SELECT_FILTER": "[]"
+          "TAP_GITLAB__SELECT_FILTER": "[]",
+          "TAP_GITLAB__USE_CACHED_CATALOG": "true"
         },
         "label": "GitLab",
         "logo_url": "https://hub.meltano.com/assets/logos/extractors/gitlab.png",
@@ -1030,11 +1045,13 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"*.*\", \"!traffic_*.*\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_GITHUB__LOAD_SCHEMA": "tap_github",
           "TAP_GITHUB__METADATA": "{}",
           "TAP_GITHUB__SCHEMA": "{}",
           "TAP_GITHUB__SELECT": "[\"*.*\", \"!traffic_*.*\"]",
-          "TAP_GITHUB__SELECT_FILTER": "[]"
+          "TAP_GITHUB__SELECT_FILTER": "[]",
+          "TAP_GITHUB__USE_CACHED_CATALOG": "true"
         },
         "label": "GitHub",
         "logo_url": "https://hub.meltano.com/assets/logos/extractors/github.png",
@@ -1182,6 +1199,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"repositories.*\", \"pull_requests.*\", \"issues.*\", \"!issues.body\", \"!issues.title\", \"!pull_requests.body\", \"!pull_requests.title\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_GITHUB_MELTANO_ORGANIZATIONS": "[\"MeltanoLabs\", \"meltano\"]",
           "TAP_GITHUB_MELTANO_STREAM_MAPS": "{\"issues.__filter__\": \"record['type'] = 'issue'\"}",
           "TAP_GITHUB_MELTANO_STREAM_MAPS_ISSUES___FILTER__": "record['type'] = 'issue'",
@@ -1190,6 +1208,7 @@
           "TAP_GITHUB_MELTANO__SCHEMA": "{}",
           "TAP_GITHUB_MELTANO__SELECT": "[\"repositories.*\", \"pull_requests.*\", \"issues.*\", \"!issues.body\", \"!issues.title\", \"!pull_requests.body\", \"!pull_requests.title\"]",
           "TAP_GITHUB_MELTANO__SELECT_FILTER": "[]",
+          "TAP_GITHUB_MELTANO__USE_CACHED_CATALOG": "true",
           "TAP_GITHUB_ORGANIZATIONS": "[\"MeltanoLabs\", \"meltano\"]",
           "TAP_GITHUB_STREAM_MAPS": "{\"issues.__filter__\": \"record['type'] = 'issue'\"}",
           "TAP_GITHUB_STREAM_MAPS_ISSUES___FILTER__": "record['type'] = 'issue'",
@@ -1197,7 +1216,8 @@
           "TAP_GITHUB__METADATA": "{}",
           "TAP_GITHUB__SCHEMA": "{}",
           "TAP_GITHUB__SELECT": "[\"repositories.*\", \"pull_requests.*\", \"issues.*\", \"!issues.body\", \"!issues.title\", \"!pull_requests.body\", \"!pull_requests.title\"]",
-          "TAP_GITHUB__SELECT_FILTER": "[]"
+          "TAP_GITHUB__SELECT_FILTER": "[]",
+          "TAP_GITHUB__USE_CACHED_CATALOG": "true"
         },
         "inherit_from": "tap-github",
         "name": "tap-github-meltano",
@@ -1253,6 +1273,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"repositories.*\", \"readme.*\", \"issues.*\", \"pull_requests.*\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_GITHUB_METRICS_LOG_LEVEL": "DEBUG",
           "TAP_GITHUB_SEARCHES": "[{\"name\": \"tap non-forks\", \"query\": \"tap- fork:false language:Python singer in:readme org:MeltanoLabs org:transferwise\"}, {\"name\": \"target non-forks\", \"query\": \"target- fork:false language:Python singer in:readme org:MeltanoLabs org:transferwise\"}]",
           "TAP_GITHUB_SEARCH_METRICS_LOG_LEVEL": "DEBUG",
@@ -1265,6 +1286,7 @@
           "TAP_GITHUB_SEARCH__SCHEMA": "{}",
           "TAP_GITHUB_SEARCH__SELECT": "[\"repositories.*\", \"readme.*\", \"issues.*\", \"pull_requests.*\"]",
           "TAP_GITHUB_SEARCH__SELECT_FILTER": "[]",
+          "TAP_GITHUB_SEARCH__USE_CACHED_CATALOG": "true",
           "TAP_GITHUB_STREAM_MAPS": "{\"repositories.__filter__\": \"('tap-' in name or 'target-' in full_name) and name != 'singer-tap-template' and name != 'singer-target-template'\\n\", \"issues.__filter__\": \"record['type'] = 'issue'\"}",
           "TAP_GITHUB_STREAM_MAPS_ISSUES___FILTER__": "record['type'] = 'issue'",
           "TAP_GITHUB_STREAM_MAPS_REPOSITORIES___FILTER__": "('tap-' in name or 'target-' in full_name) and name != 'singer-tap-template' and name != 'singer-target-template'\n",
@@ -1272,7 +1294,8 @@
           "TAP_GITHUB__METADATA": "{}",
           "TAP_GITHUB__SCHEMA": "{}",
           "TAP_GITHUB__SELECT": "[\"repositories.*\", \"readme.*\", \"issues.*\", \"pull_requests.*\"]",
-          "TAP_GITHUB__SELECT_FILTER": "[]"
+          "TAP_GITHUB__SELECT_FILTER": "[]",
+          "TAP_GITHUB__USE_CACHED_CATALOG": "true"
         },
         "inherit_from": "tap-github",
         "name": "tap-github-search",
@@ -1311,6 +1334,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"*.*\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_SNOWFLAKE_ACCOUNT": "epa06486",
           "TAP_SNOWFLAKE_DBNAME": "CICD_PROD",
           "TAP_SNOWFLAKE_INSECURE_MODE": "False",
@@ -1321,7 +1345,8 @@
           "TAP_SNOWFLAKE__METADATA": "{}",
           "TAP_SNOWFLAKE__SCHEMA": "{}",
           "TAP_SNOWFLAKE__SELECT": "[\"*.*\"]",
-          "TAP_SNOWFLAKE__SELECT_FILTER": "[]"
+          "TAP_SNOWFLAKE__SELECT_FILTER": "[]",
+          "TAP_SNOWFLAKE__USE_CACHED_CATALOG": "true"
         },
         "label": "Snowflake",
         "logo_url": "https://hub.meltano.com/assets/logos/extractors/snowflake.png",
@@ -1424,6 +1449,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"*FACT_VARIANT_HUB_METRICS.NAME\", \"*FACT_VARIANT_HUB_METRICS.VARIANT\", \"*FACT_VARIANT_HUB_METRICS.REPO\", \"*FACT_VARIANT_HUB_METRICS.PLUGIN_TYPE\", \"*FACT_VARIANT_HUB_METRICS.PIP_URL\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS_UNSTRUCT_BY_VARIANT\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_PROJECTS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_PROJECTS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_PROJECTS_UNSTRUCT_BY_VARIANT\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS_UNSTRUCT_BY_VARIANT\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_EXECS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_EXECS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_EXECS_UNSTRUCT_BY_VARIANT\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_SNOWFLAKE_ACCOUNT": "epa06486",
           "TAP_SNOWFLAKE_DBNAME": "CICD_PROD",
           "TAP_SNOWFLAKE_INSECURE_MODE": "False",
@@ -1440,6 +1466,7 @@
           "TAP_SNOWFLAKE_METRICS__SCHEMA": "{}",
           "TAP_SNOWFLAKE_METRICS__SELECT": "[\"*FACT_VARIANT_HUB_METRICS.NAME\", \"*FACT_VARIANT_HUB_METRICS.VARIANT\", \"*FACT_VARIANT_HUB_METRICS.REPO\", \"*FACT_VARIANT_HUB_METRICS.PLUGIN_TYPE\", \"*FACT_VARIANT_HUB_METRICS.PIP_URL\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS_UNSTRUCT_BY_VARIANT\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_PROJECTS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_PROJECTS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_PROJECTS_UNSTRUCT_BY_VARIANT\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS_UNSTRUCT_BY_VARIANT\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_EXECS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_EXECS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_EXECS_UNSTRUCT_BY_VARIANT\"]",
           "TAP_SNOWFLAKE_METRICS__SELECT_FILTER": "[]",
+          "TAP_SNOWFLAKE_METRICS__USE_CACHED_CATALOG": "true",
           "TAP_SNOWFLAKE_ROLE": "CICD",
           "TAP_SNOWFLAKE_TABLES": "CICD_PROD._MELTANO_HUB.FACT_VARIANT_HUB_METRICS",
           "TAP_SNOWFLAKE_USER": "CICD",
@@ -1449,7 +1476,8 @@
           "TAP_SNOWFLAKE__METADATA___REPLICATION_METHOD": "FULL_TABLE",
           "TAP_SNOWFLAKE__SCHEMA": "{}",
           "TAP_SNOWFLAKE__SELECT": "[\"*FACT_VARIANT_HUB_METRICS.NAME\", \"*FACT_VARIANT_HUB_METRICS.VARIANT\", \"*FACT_VARIANT_HUB_METRICS.REPO\", \"*FACT_VARIANT_HUB_METRICS.PLUGIN_TYPE\", \"*FACT_VARIANT_HUB_METRICS.PIP_URL\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS_UNSTRUCT_BY_VARIANT\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_PROJECTS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_PROJECTS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_PROJECTS_UNSTRUCT_BY_VARIANT\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS_UNSTRUCT_BY_VARIANT\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_EXECS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_EXECS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_EXECS_UNSTRUCT_BY_VARIANT\"]",
-          "TAP_SNOWFLAKE__SELECT_FILTER": "[]"
+          "TAP_SNOWFLAKE__SELECT_FILTER": "[]",
+          "TAP_SNOWFLAKE__USE_CACHED_CATALOG": "true"
         },
         "inherit_from": "tap-snowflake",
         "metadata": {
@@ -1498,6 +1526,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"*HUB_METRICS_AUDIT.UPDATED_DATE\", \"*HUB_METRICS_AUDIT.METRIC_TYPE\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_SNOWFLAKE_ACCOUNT": "epa06486",
           "TAP_SNOWFLAKE_AUDIT_ACCOUNT": "epa06486",
           "TAP_SNOWFLAKE_AUDIT_DBNAME": "CICD_PROD",
@@ -1512,6 +1541,7 @@
           "TAP_SNOWFLAKE_AUDIT__SCHEMA": "{}",
           "TAP_SNOWFLAKE_AUDIT__SELECT": "[\"*HUB_METRICS_AUDIT.UPDATED_DATE\", \"*HUB_METRICS_AUDIT.METRIC_TYPE\"]",
           "TAP_SNOWFLAKE_AUDIT__SELECT_FILTER": "[]",
+          "TAP_SNOWFLAKE_AUDIT__USE_CACHED_CATALOG": "true",
           "TAP_SNOWFLAKE_DBNAME": "CICD_PROD",
           "TAP_SNOWFLAKE_INSECURE_MODE": "False",
           "TAP_SNOWFLAKE_ROLE": "CICD",
@@ -1523,7 +1553,8 @@
           "TAP_SNOWFLAKE__METADATA___REPLICATION_METHOD": "FULL_TABLE",
           "TAP_SNOWFLAKE__SCHEMA": "{}",
           "TAP_SNOWFLAKE__SELECT": "[\"*HUB_METRICS_AUDIT.UPDATED_DATE\", \"*HUB_METRICS_AUDIT.METRIC_TYPE\"]",
-          "TAP_SNOWFLAKE__SELECT_FILTER": "[]"
+          "TAP_SNOWFLAKE__SELECT_FILTER": "[]",
+          "TAP_SNOWFLAKE__USE_CACHED_CATALOG": "true"
         },
         "inherit_from": "tap-snowflake",
         "metadata": {
@@ -1555,6 +1586,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"*SLACK_ALERTS.TITLE\", \"*SLACK_ALERTS.BODY\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_SNOWFLAKE_ACCOUNT": "epa06486",
           "TAP_SNOWFLAKE_DBNAME": "CICD_PROD",
           "TAP_SNOWFLAKE_INSECURE_MODE": "False",
@@ -1572,6 +1604,7 @@
           "TAP_SNOWFLAKE_SINGER_ACTIVITY__SCHEMA": "{}",
           "TAP_SNOWFLAKE_SINGER_ACTIVITY__SELECT": "[\"*SLACK_ALERTS.TITLE\", \"*SLACK_ALERTS.BODY\"]",
           "TAP_SNOWFLAKE_SINGER_ACTIVITY__SELECT_FILTER": "[]",
+          "TAP_SNOWFLAKE_SINGER_ACTIVITY__USE_CACHED_CATALOG": "true",
           "TAP_SNOWFLAKE_TABLES": "CICD_PROD._SLACK_NOTIFICATIONS.SLACK_ALERTS",
           "TAP_SNOWFLAKE_USER": "CICD",
           "TAP_SNOWFLAKE_WAREHOUSE": "CICD",
@@ -1580,7 +1613,8 @@
           "TAP_SNOWFLAKE__METADATA___REPLICATION_METHOD": "FULL_TABLE",
           "TAP_SNOWFLAKE__SCHEMA": "{}",
           "TAP_SNOWFLAKE__SELECT": "[\"*SLACK_ALERTS.TITLE\", \"*SLACK_ALERTS.BODY\"]",
-          "TAP_SNOWFLAKE__SELECT_FILTER": "[]"
+          "TAP_SNOWFLAKE__SELECT_FILTER": "[]",
+          "TAP_SNOWFLAKE__USE_CACHED_CATALOG": "true"
         },
         "inherit_from": "tap-snowflake",
         "metadata": {
diff --git a/integration/meltano-manifest/expected-manifests/meltano-manifest.jigsaw.json b/integration/meltano-manifest/expected-manifests/meltano-manifest.jigsaw.json
index 7af906b56a..aeb70e370d 100644
--- a/integration/meltano-manifest/expected-manifests/meltano-manifest.jigsaw.json
+++ b/integration/meltano-manifest/expected-manifests/meltano-manifest.jigsaw.json
@@ -189,6 +189,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"*.*\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_CLOUDWATCH_AWS_REGION_NAME": "us-west-2",
           "TAP_CLOUDWATCH_BATCH_INCREMENT_S": "3600",
           "TAP_CLOUDWATCH_LOG_GROUP_NAME": "API-Gateway-Execution-Logs_i32s35df22/prod",
@@ -198,7 +199,8 @@
           "TAP_CLOUDWATCH__METADATA": "{}",
           "TAP_CLOUDWATCH__SCHEMA": "{}",
           "TAP_CLOUDWATCH__SELECT": "[\"*.*\"]",
-          "TAP_CLOUDWATCH__SELECT_FILTER": "[]"
+          "TAP_CLOUDWATCH__SELECT_FILTER": "[]",
+          "TAP_CLOUDWATCH__USE_CACHED_CATALOG": "true"
         },
         "executable": "tap-cloudwatch",
         "label": "Cloudwatch",
@@ -366,11 +368,13 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"plugins.*\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_MELTANOHUB__LOAD_SCHEMA": "tap_meltanohub",
           "TAP_MELTANOHUB__METADATA": "{}",
           "TAP_MELTANOHUB__SCHEMA": "{}",
           "TAP_MELTANOHUB__SELECT": "[\"plugins.*\"]",
-          "TAP_MELTANOHUB__SELECT_FILTER": "[]"
+          "TAP_MELTANOHUB__SELECT_FILTER": "[]",
+          "TAP_MELTANOHUB__USE_CACHED_CATALOG": "true"
         },
         "label": "Meltanohub",
         "logo_url": "https://hub.meltano.com/assets/logos/extractors/meltanohub.png",
@@ -470,12 +474,14 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"*.*\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_SPREADSHEETS_ANYWHERE_TABLES": "[{\"path\": \"https://ip-ranges.amazonaws.com\", \"format\": \"json\", \"start_date\": \"2020-01-01T00:00:00Z\", \"key_properties\": [\"ip_prefix\"], \"name\": \"aws_ips\", \"pattern\": \"ip-ranges.json\", \"json_path\": \"prefixes\"}, {\"path\": \"https://www.gstatic.com/ipranges\", \"format\": \"json\", \"start_date\": \"2020-01-01T00:00:00Z\", \"key_properties\": [\"id\"], \"name\": \"gcp_ips\", \"pattern\": \"cloud.json\", \"json_path\": \"prefixes\"}, {\"path\": \"https://download.microsoft.com/download/7/1/D/71D86715-5596-4529-9B13-DA13A5DE5B63\", \"format\": \"json\", \"start_date\": \"2020-01-01T00:00:00Z\", \"key_properties\": [\"id\"], \"name\": \"azure_ips\", \"pattern\": \"ServiceTags_Public_20230116.json\", \"json_path\": \"values\"}]",
           "TAP_SPREADSHEETS_ANYWHERE__LOAD_SCHEMA": "tap_spreadsheets_anywhere",
           "TAP_SPREADSHEETS_ANYWHERE__METADATA": "{}",
           "TAP_SPREADSHEETS_ANYWHERE__SCHEMA": "{}",
           "TAP_SPREADSHEETS_ANYWHERE__SELECT": "[\"*.*\"]",
-          "TAP_SPREADSHEETS_ANYWHERE__SELECT_FILTER": "[]"
+          "TAP_SPREADSHEETS_ANYWHERE__SELECT_FILTER": "[]",
+          "TAP_SPREADSHEETS_ANYWHERE__USE_CACHED_CATALOG": "true"
         },
         "label": "Spreadsheets Anywhere",
         "logo_url": "https://hub.meltano.com/assets/logos/extractors/spreadsheets-anywhere.png",
@@ -532,6 +538,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"users.*\", \"channels.*\", \"messages.*\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_SLACK_AUTO_JOIN_CHANNELS": "false",
           "TAP_SLACK_CHANNEL_TYPES": "[\"private_channel\"]",
           "TAP_SLACK_SELECTED_CHANNELS": "[\"C01SK13R9NJ\"]",
@@ -541,7 +548,8 @@
           "TAP_SLACK__METADATA": "{}",
           "TAP_SLACK__SCHEMA": "{}",
           "TAP_SLACK__SELECT": "[\"users.*\", \"channels.*\", \"messages.*\"]",
-          "TAP_SLACK__SELECT_FILTER": "[]"
+          "TAP_SLACK__SELECT_FILTER": "[]",
+          "TAP_SLACK__USE_CACHED_CATALOG": "true"
         },
         "label": "Slack",
         "logo_url": "https://hub.meltano.com/assets/logos/extractors/slack.png",
@@ -701,6 +709,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"channels.*\", \"messages.*\", \"threads.*\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_SLACK_AUTO_JOIN_CHANNELS": "false",
           "TAP_SLACK_CHANNEL_TYPES": "[\"public_channel\"]",
           "TAP_SLACK_PUBLIC_AUTO_JOIN_CHANNELS": "false",
@@ -713,6 +722,7 @@
           "TAP_SLACK_PUBLIC__SCHEMA": "{}",
           "TAP_SLACK_PUBLIC__SELECT": "[\"channels.*\", \"messages.*\", \"threads.*\"]",
           "TAP_SLACK_PUBLIC__SELECT_FILTER": "[]",
+          "TAP_SLACK_PUBLIC__USE_CACHED_CATALOG": "true",
           "TAP_SLACK_SELECTED_CHANNELS": "[]",
           "TAP_SLACK_START_DATE": "2022-09-01",
           "TAP_SLACK_THREAD_LOOKBACK_DAYS": "1",
@@ -720,7 +730,8 @@
           "TAP_SLACK__METADATA": "{}",
           "TAP_SLACK__SCHEMA": "{}",
           "TAP_SLACK__SELECT": "[\"channels.*\", \"messages.*\", \"threads.*\"]",
-          "TAP_SLACK__SELECT_FILTER": "[]"
+          "TAP_SLACK__SELECT_FILTER": "[]",
+          "TAP_SLACK__USE_CACHED_CATALOG": "true"
         },
         "inherit_from": "tap-slack",
         "name": "tap-slack-public",
@@ -753,13 +764,15 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"*.*\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_GOOGLE_ANALYTICS_REPORTS": "./extract/ga_reports/cli_events_report_definition.json",
           "TAP_GOOGLE_ANALYTICS_VIEW_ID": "188392047",
           "TAP_GOOGLE_ANALYTICS__LOAD_SCHEMA": "tap_google_analytics",
           "TAP_GOOGLE_ANALYTICS__METADATA": "{}",
           "TAP_GOOGLE_ANALYTICS__SCHEMA": "{}",
           "TAP_GOOGLE_ANALYTICS__SELECT": "[\"*.*\"]",
-          "TAP_GOOGLE_ANALYTICS__SELECT_FILTER": "[]"
+          "TAP_GOOGLE_ANALYTICS__SELECT_FILTER": "[]",
+          "TAP_GOOGLE_ANALYTICS__USE_CACHED_CATALOG": "true"
         },
         "label": "Google Analytics (Universal Analytics API - Deprecated)",
         "logo_url": "https://hub.meltano.com/assets/logos/extractors/google-analytics.png",
@@ -901,6 +914,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"projects.*\", \"merge_requests.*\", \"issues.*\", \"!issues.description\", \"!issues.title\", \"!merge_requests.description\", \"!merge_requests.title\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_GITLAB_API_URL": "https://gitlab.com",
           "TAP_GITLAB_FETCH_MERGE_REQUEST_COMMITS": "false",
           "TAP_GITLAB_FETCH_PIPELINES_EXTENDED": "false",
@@ -912,7 +926,8 @@
           "TAP_GITLAB__METADATA": "{}",
           "TAP_GITLAB__SCHEMA": "{}",
           "TAP_GITLAB__SELECT": "[\"projects.*\", \"merge_requests.*\", \"issues.*\", \"!issues.description\", \"!issues.title\", \"!merge_requests.description\", \"!merge_requests.title\"]",
-          "TAP_GITLAB__SELECT_FILTER": "[]"
+          "TAP_GITLAB__SELECT_FILTER": "[]",
+          "TAP_GITLAB__USE_CACHED_CATALOG": "true"
         },
         "label": "GitLab",
         "logo_url": "https://hub.meltano.com/assets/logos/extractors/gitlab.png",
@@ -1018,11 +1033,13 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"*.*\", \"!traffic_*.*\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_GITHUB__LOAD_SCHEMA": "tap_github",
           "TAP_GITHUB__METADATA": "{}",
           "TAP_GITHUB__SCHEMA": "{}",
           "TAP_GITHUB__SELECT": "[\"*.*\", \"!traffic_*.*\"]",
-          "TAP_GITHUB__SELECT_FILTER": "[]"
+          "TAP_GITHUB__SELECT_FILTER": "[]",
+          "TAP_GITHUB__USE_CACHED_CATALOG": "true"
         },
         "label": "GitHub",
         "logo_url": "https://hub.meltano.com/assets/logos/extractors/github.png",
@@ -1169,6 +1186,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"repositories.*\", \"pull_requests.*\", \"issues.*\", \"!issues.body\", \"!issues.title\", \"!pull_requests.body\", \"!pull_requests.title\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_GITHUB_MELTANO_ORGANIZATIONS": "[\"MeltanoLabs\", \"meltano\"]",
           "TAP_GITHUB_MELTANO_STREAM_MAPS": "{\"issues.__filter__\": \"record['type'] = 'issue'\"}",
           "TAP_GITHUB_MELTANO_STREAM_MAPS_ISSUES___FILTER__": "record['type'] = 'issue'",
@@ -1177,6 +1195,7 @@
           "TAP_GITHUB_MELTANO__SCHEMA": "{}",
           "TAP_GITHUB_MELTANO__SELECT": "[\"repositories.*\", \"pull_requests.*\", \"issues.*\", \"!issues.body\", \"!issues.title\", \"!pull_requests.body\", \"!pull_requests.title\"]",
           "TAP_GITHUB_MELTANO__SELECT_FILTER": "[]",
+          "TAP_GITHUB_MELTANO__USE_CACHED_CATALOG": "true",
           "TAP_GITHUB_ORGANIZATIONS": "[\"MeltanoLabs\", \"meltano\"]",
           "TAP_GITHUB_STREAM_MAPS": "{\"issues.__filter__\": \"record['type'] = 'issue'\"}",
           "TAP_GITHUB_STREAM_MAPS_ISSUES___FILTER__": "record['type'] = 'issue'",
@@ -1184,7 +1203,8 @@
           "TAP_GITHUB__METADATA": "{}",
           "TAP_GITHUB__SCHEMA": "{}",
           "TAP_GITHUB__SELECT": "[\"repositories.*\", \"pull_requests.*\", \"issues.*\", \"!issues.body\", \"!issues.title\", \"!pull_requests.body\", \"!pull_requests.title\"]",
-          "TAP_GITHUB__SELECT_FILTER": "[]"
+          "TAP_GITHUB__SELECT_FILTER": "[]",
+          "TAP_GITHUB__USE_CACHED_CATALOG": "true"
         },
         "inherit_from": "tap-github",
         "name": "tap-github-meltano",
@@ -1233,6 +1253,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"repositories.*\", \"readme.*\", \"issues.*\", \"pull_requests.*\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_GITHUB_METRICS_LOG_LEVEL": "DEBUG",
           "TAP_GITHUB_SEARCHES": "[{\"name\": \"tap non-forks\", \"query\": \"tap- fork:false language:Python singer in:readme\"}, {\"name\": \"target non-forks\", \"query\": \"target- fork:false language:Python singer in:readme\"}]",
           "TAP_GITHUB_SEARCH_METRICS_LOG_LEVEL": "DEBUG",
@@ -1246,6 +1267,7 @@
           "TAP_GITHUB_SEARCH__SCHEMA": "{}",
           "TAP_GITHUB_SEARCH__SELECT": "[\"repositories.*\", \"readme.*\", \"issues.*\", \"pull_requests.*\"]",
           "TAP_GITHUB_SEARCH__SELECT_FILTER": "[]",
+          "TAP_GITHUB_SEARCH__USE_CACHED_CATALOG": "true",
           "TAP_GITHUB_START_DATE": "2022-02-13",
           "TAP_GITHUB_STREAM_MAPS": "{\"repositories.__filter__\": \"('tap-' in name or 'target-' in full_name) and name != 'singer-tap-template' and name != 'singer-target-template'\\n\", \"issues.__filter__\": \"record['type'] = 'issue'\"}",
           "TAP_GITHUB_STREAM_MAPS_ISSUES___FILTER__": "record['type'] = 'issue'",
@@ -1254,7 +1276,8 @@
           "TAP_GITHUB__METADATA": "{}",
           "TAP_GITHUB__SCHEMA": "{}",
           "TAP_GITHUB__SELECT": "[\"repositories.*\", \"readme.*\", \"issues.*\", \"pull_requests.*\"]",
-          "TAP_GITHUB__SELECT_FILTER": "[]"
+          "TAP_GITHUB__SELECT_FILTER": "[]",
+          "TAP_GITHUB__USE_CACHED_CATALOG": "true"
         },
         "inherit_from": "tap-github",
         "name": "tap-github-search",
@@ -1285,13 +1308,15 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"*.*\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_SNOWFLAKE_ACCOUNT": "epa06486",
           "TAP_SNOWFLAKE_INSECURE_MODE": "False",
           "TAP_SNOWFLAKE__LOAD_SCHEMA": "tap_snowflake",
           "TAP_SNOWFLAKE__METADATA": "{}",
           "TAP_SNOWFLAKE__SCHEMA": "{}",
           "TAP_SNOWFLAKE__SELECT": "[\"*.*\"]",
-          "TAP_SNOWFLAKE__SELECT_FILTER": "[]"
+          "TAP_SNOWFLAKE__SELECT_FILTER": "[]",
+          "TAP_SNOWFLAKE__USE_CACHED_CATALOG": "true"
         },
         "label": "Snowflake",
         "logo_url": "https://hub.meltano.com/assets/logos/extractors/snowflake.png",
@@ -1386,6 +1411,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"*FACT_VARIANT_HUB_METRICS.NAME\", \"*FACT_VARIANT_HUB_METRICS.VARIANT\", \"*FACT_VARIANT_HUB_METRICS.REPO\", \"*FACT_VARIANT_HUB_METRICS.PLUGIN_TYPE\", \"*FACT_VARIANT_HUB_METRICS.PIP_URL\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS_UNSTRUCT_BY_VARIANT\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_PROJECTS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_PROJECTS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_PROJECTS_UNSTRUCT_BY_VARIANT\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS_UNSTRUCT_BY_VARIANT\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_EXECS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_EXECS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_EXECS_UNSTRUCT_BY_VARIANT\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_SNOWFLAKE_ACCOUNT": "epa06486",
           "TAP_SNOWFLAKE_INSECURE_MODE": "False",
           "TAP_SNOWFLAKE_METRICS_ACCOUNT": "epa06486",
@@ -1396,12 +1422,14 @@
           "TAP_SNOWFLAKE_METRICS__SCHEMA": "{}",
           "TAP_SNOWFLAKE_METRICS__SELECT": "[\"*FACT_VARIANT_HUB_METRICS.NAME\", \"*FACT_VARIANT_HUB_METRICS.VARIANT\", \"*FACT_VARIANT_HUB_METRICS.REPO\", \"*FACT_VARIANT_HUB_METRICS.PLUGIN_TYPE\", \"*FACT_VARIANT_HUB_METRICS.PIP_URL\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS_UNSTRUCT_BY_VARIANT\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_PROJECTS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_PROJECTS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_PROJECTS_UNSTRUCT_BY_VARIANT\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS_UNSTRUCT_BY_VARIANT\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_EXECS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_EXECS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_EXECS_UNSTRUCT_BY_VARIANT\"]",
           "TAP_SNOWFLAKE_METRICS__SELECT_FILTER": "[]",
+          "TAP_SNOWFLAKE_METRICS__USE_CACHED_CATALOG": "true",
           "TAP_SNOWFLAKE__LOAD_SCHEMA": "tap_snowflake_metrics",
           "TAP_SNOWFLAKE__METADATA": "{\"*\": {\"replication-method\": \"FULL_TABLE\"}}",
           "TAP_SNOWFLAKE__METADATA___REPLICATION_METHOD": "FULL_TABLE",
           "TAP_SNOWFLAKE__SCHEMA": "{}",
           "TAP_SNOWFLAKE__SELECT": "[\"*FACT_VARIANT_HUB_METRICS.NAME\", \"*FACT_VARIANT_HUB_METRICS.VARIANT\", \"*FACT_VARIANT_HUB_METRICS.REPO\", \"*FACT_VARIANT_HUB_METRICS.PLUGIN_TYPE\", \"*FACT_VARIANT_HUB_METRICS.PIP_URL\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS_UNSTRUCT_BY_VARIANT\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_PROJECTS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_PROJECTS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_PROJECTS_UNSTRUCT_BY_VARIANT\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS_UNSTRUCT_BY_VARIANT\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_EXECS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_EXECS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_EXECS_UNSTRUCT_BY_VARIANT\"]",
-          "TAP_SNOWFLAKE__SELECT_FILTER": "[]"
+          "TAP_SNOWFLAKE__SELECT_FILTER": "[]",
+          "TAP_SNOWFLAKE__USE_CACHED_CATALOG": "true"
         },
         "inherit_from": "tap-snowflake",
         "metadata": {
@@ -1442,6 +1470,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"*HUB_METRICS_AUDIT.UPDATED_DATE\", \"*HUB_METRICS_AUDIT.METRIC_TYPE\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_SNOWFLAKE_ACCOUNT": "epa06486",
           "TAP_SNOWFLAKE_AUDIT_ACCOUNT": "epa06486",
           "TAP_SNOWFLAKE_AUDIT_INSECURE_MODE": "False",
@@ -1451,13 +1480,15 @@
           "TAP_SNOWFLAKE_AUDIT__SCHEMA": "{}",
           "TAP_SNOWFLAKE_AUDIT__SELECT": "[\"*HUB_METRICS_AUDIT.UPDATED_DATE\", \"*HUB_METRICS_AUDIT.METRIC_TYPE\"]",
           "TAP_SNOWFLAKE_AUDIT__SELECT_FILTER": "[]",
+          "TAP_SNOWFLAKE_AUDIT__USE_CACHED_CATALOG": "true",
           "TAP_SNOWFLAKE_INSECURE_MODE": "False",
           "TAP_SNOWFLAKE__LOAD_SCHEMA": "tap_snowflake_audit",
           "TAP_SNOWFLAKE__METADATA": "{\"*\": {\"replication-method\": \"FULL_TABLE\"}}",
           "TAP_SNOWFLAKE__METADATA___REPLICATION_METHOD": "FULL_TABLE",
           "TAP_SNOWFLAKE__SCHEMA": "{}",
           "TAP_SNOWFLAKE__SELECT": "[\"*HUB_METRICS_AUDIT.UPDATED_DATE\", \"*HUB_METRICS_AUDIT.METRIC_TYPE\"]",
-          "TAP_SNOWFLAKE__SELECT_FILTER": "[]"
+          "TAP_SNOWFLAKE__SELECT_FILTER": "[]",
+          "TAP_SNOWFLAKE__USE_CACHED_CATALOG": "true"
         },
         "inherit_from": "tap-snowflake",
         "metadata": {
@@ -1481,6 +1512,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"*SLACK_ALERTS.TITLE\", \"*SLACK_ALERTS.BODY\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_SNOWFLAKE_ACCOUNT": "epa06486",
           "TAP_SNOWFLAKE_INSECURE_MODE": "False",
           "TAP_SNOWFLAKE_SINGER_ACTIVITY_ACCOUNT": "epa06486",
@@ -1491,12 +1523,14 @@
           "TAP_SNOWFLAKE_SINGER_ACTIVITY__SCHEMA": "{}",
           "TAP_SNOWFLAKE_SINGER_ACTIVITY__SELECT": "[\"*SLACK_ALERTS.TITLE\", \"*SLACK_ALERTS.BODY\"]",
           "TAP_SNOWFLAKE_SINGER_ACTIVITY__SELECT_FILTER": "[]",
+          "TAP_SNOWFLAKE_SINGER_ACTIVITY__USE_CACHED_CATALOG": "true",
           "TAP_SNOWFLAKE__LOAD_SCHEMA": "tap_snowflake_singer_activity",
           "TAP_SNOWFLAKE__METADATA": "{\"*\": {\"replication-method\": \"FULL_TABLE\"}}",
           "TAP_SNOWFLAKE__METADATA___REPLICATION_METHOD": "FULL_TABLE",
           "TAP_SNOWFLAKE__SCHEMA": "{}",
           "TAP_SNOWFLAKE__SELECT": "[\"*SLACK_ALERTS.TITLE\", \"*SLACK_ALERTS.BODY\"]",
-          "TAP_SNOWFLAKE__SELECT_FILTER": "[]"
+          "TAP_SNOWFLAKE__SELECT_FILTER": "[]",
+          "TAP_SNOWFLAKE__USE_CACHED_CATALOG": "true"
         },
         "inherit_from": "tap-snowflake",
         "metadata": {
diff --git a/integration/meltano-manifest/expected-manifests/meltano-manifest.json b/integration/meltano-manifest/expected-manifests/meltano-manifest.json
index 2d276e6352..daac127b85 100644
--- a/integration/meltano-manifest/expected-manifests/meltano-manifest.json
+++ b/integration/meltano-manifest/expected-manifests/meltano-manifest.json
@@ -180,6 +180,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"*.*\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_CLOUDWATCH_AWS_REGION_NAME": "us-west-2",
           "TAP_CLOUDWATCH_BATCH_INCREMENT_S": "3600",
           "TAP_CLOUDWATCH_LOG_GROUP_NAME": "API-Gateway-Execution-Logs_i32s35df22/prod",
@@ -189,7 +190,8 @@
           "TAP_CLOUDWATCH__METADATA": "{}",
           "TAP_CLOUDWATCH__SCHEMA": "{}",
           "TAP_CLOUDWATCH__SELECT": "[\"*.*\"]",
-          "TAP_CLOUDWATCH__SELECT_FILTER": "[]"
+          "TAP_CLOUDWATCH__SELECT_FILTER": "[]",
+          "TAP_CLOUDWATCH__USE_CACHED_CATALOG": "true"
         },
         "executable": "tap-cloudwatch",
         "label": "Cloudwatch",
@@ -357,11 +359,13 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"plugins.*\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_MELTANOHUB__LOAD_SCHEMA": "tap_meltanohub",
           "TAP_MELTANOHUB__METADATA": "{}",
           "TAP_MELTANOHUB__SCHEMA": "{}",
           "TAP_MELTANOHUB__SELECT": "[\"plugins.*\"]",
-          "TAP_MELTANOHUB__SELECT_FILTER": "[]"
+          "TAP_MELTANOHUB__SELECT_FILTER": "[]",
+          "TAP_MELTANOHUB__USE_CACHED_CATALOG": "true"
         },
         "label": "Meltanohub",
         "logo_url": "https://hub.meltano.com/assets/logos/extractors/meltanohub.png",
@@ -461,12 +465,14 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"*.*\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_SPREADSHEETS_ANYWHERE_TABLES": "[{\"path\": \"https://ip-ranges.amazonaws.com\", \"format\": \"json\", \"start_date\": \"2020-01-01T00:00:00Z\", \"key_properties\": [\"ip_prefix\"], \"name\": \"aws_ips\", \"pattern\": \"ip-ranges.json\", \"json_path\": \"prefixes\"}, {\"path\": \"https://www.gstatic.com/ipranges\", \"format\": \"json\", \"start_date\": \"2020-01-01T00:00:00Z\", \"key_properties\": [\"id\"], \"name\": \"gcp_ips\", \"pattern\": \"cloud.json\", \"json_path\": \"prefixes\"}, {\"path\": \"https://download.microsoft.com/download/7/1/D/71D86715-5596-4529-9B13-DA13A5DE5B63\", \"format\": \"json\", \"start_date\": \"2020-01-01T00:00:00Z\", \"key_properties\": [\"id\"], \"name\": \"azure_ips\", \"pattern\": \"ServiceTags_Public_20230116.json\", \"json_path\": \"values\"}]",
           "TAP_SPREADSHEETS_ANYWHERE__LOAD_SCHEMA": "tap_spreadsheets_anywhere",
           "TAP_SPREADSHEETS_ANYWHERE__METADATA": "{}",
           "TAP_SPREADSHEETS_ANYWHERE__SCHEMA": "{}",
           "TAP_SPREADSHEETS_ANYWHERE__SELECT": "[\"*.*\"]",
-          "TAP_SPREADSHEETS_ANYWHERE__SELECT_FILTER": "[]"
+          "TAP_SPREADSHEETS_ANYWHERE__SELECT_FILTER": "[]",
+          "TAP_SPREADSHEETS_ANYWHERE__USE_CACHED_CATALOG": "true"
         },
         "label": "Spreadsheets Anywhere",
         "logo_url": "https://hub.meltano.com/assets/logos/extractors/spreadsheets-anywhere.png",
@@ -523,6 +529,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"users.*\", \"channels.*\", \"messages.*\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_SLACK_AUTO_JOIN_CHANNELS": "false",
           "TAP_SLACK_CHANNEL_TYPES": "[\"private_channel\"]",
           "TAP_SLACK_SELECTED_CHANNELS": "[\"C01SK13R9NJ\"]",
@@ -532,7 +539,8 @@
           "TAP_SLACK__METADATA": "{}",
           "TAP_SLACK__SCHEMA": "{}",
           "TAP_SLACK__SELECT": "[\"users.*\", \"channels.*\", \"messages.*\"]",
-          "TAP_SLACK__SELECT_FILTER": "[]"
+          "TAP_SLACK__SELECT_FILTER": "[]",
+          "TAP_SLACK__USE_CACHED_CATALOG": "true"
         },
         "label": "Slack",
         "logo_url": "https://hub.meltano.com/assets/logos/extractors/slack.png",
@@ -692,6 +700,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"channels.*\", \"messages.*\", \"threads.*\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_SLACK_AUTO_JOIN_CHANNELS": "false",
           "TAP_SLACK_CHANNEL_TYPES": "[\"public_channel\"]",
           "TAP_SLACK_PUBLIC_AUTO_JOIN_CHANNELS": "false",
@@ -704,6 +713,7 @@
           "TAP_SLACK_PUBLIC__SCHEMA": "{}",
           "TAP_SLACK_PUBLIC__SELECT": "[\"channels.*\", \"messages.*\", \"threads.*\"]",
           "TAP_SLACK_PUBLIC__SELECT_FILTER": "[]",
+          "TAP_SLACK_PUBLIC__USE_CACHED_CATALOG": "true",
           "TAP_SLACK_SELECTED_CHANNELS": "[]",
           "TAP_SLACK_START_DATE": "2021-01-01",
           "TAP_SLACK_THREAD_LOOKBACK_DAYS": "1",
@@ -711,7 +721,8 @@
           "TAP_SLACK__METADATA": "{}",
           "TAP_SLACK__SCHEMA": "{}",
           "TAP_SLACK__SELECT": "[\"channels.*\", \"messages.*\", \"threads.*\"]",
-          "TAP_SLACK__SELECT_FILTER": "[]"
+          "TAP_SLACK__SELECT_FILTER": "[]",
+          "TAP_SLACK__USE_CACHED_CATALOG": "true"
         },
         "inherit_from": "tap-slack",
         "name": "tap-slack-public",
@@ -744,13 +755,15 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"*.*\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_GOOGLE_ANALYTICS_REPORTS": "./extract/ga_reports/cli_events_report_definition.json",
           "TAP_GOOGLE_ANALYTICS_VIEW_ID": "188392047",
           "TAP_GOOGLE_ANALYTICS__LOAD_SCHEMA": "tap_google_analytics",
           "TAP_GOOGLE_ANALYTICS__METADATA": "{}",
           "TAP_GOOGLE_ANALYTICS__SCHEMA": "{}",
           "TAP_GOOGLE_ANALYTICS__SELECT": "[\"*.*\"]",
-          "TAP_GOOGLE_ANALYTICS__SELECT_FILTER": "[]"
+          "TAP_GOOGLE_ANALYTICS__SELECT_FILTER": "[]",
+          "TAP_GOOGLE_ANALYTICS__USE_CACHED_CATALOG": "true"
         },
         "label": "Google Analytics (Universal Analytics API - Deprecated)",
         "logo_url": "https://hub.meltano.com/assets/logos/extractors/google-analytics.png",
@@ -892,6 +905,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"projects.*\", \"merge_requests.*\", \"issues.*\", \"!issues.description\", \"!issues.title\", \"!merge_requests.description\", \"!merge_requests.title\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_GITLAB_API_URL": "https://gitlab.com",
           "TAP_GITLAB_FETCH_MERGE_REQUEST_COMMITS": "false",
           "TAP_GITLAB_FETCH_PIPELINES_EXTENDED": "false",
@@ -903,7 +917,8 @@
           "TAP_GITLAB__METADATA": "{}",
           "TAP_GITLAB__SCHEMA": "{}",
           "TAP_GITLAB__SELECT": "[\"projects.*\", \"merge_requests.*\", \"issues.*\", \"!issues.description\", \"!issues.title\", \"!merge_requests.description\", \"!merge_requests.title\"]",
-          "TAP_GITLAB__SELECT_FILTER": "[]"
+          "TAP_GITLAB__SELECT_FILTER": "[]",
+          "TAP_GITLAB__USE_CACHED_CATALOG": "true"
         },
         "label": "GitLab",
         "logo_url": "https://hub.meltano.com/assets/logos/extractors/gitlab.png",
@@ -1009,11 +1024,13 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"*.*\", \"!traffic_*.*\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_GITHUB__LOAD_SCHEMA": "tap_github",
           "TAP_GITHUB__METADATA": "{}",
           "TAP_GITHUB__SCHEMA": "{}",
           "TAP_GITHUB__SELECT": "[\"*.*\", \"!traffic_*.*\"]",
-          "TAP_GITHUB__SELECT_FILTER": "[]"
+          "TAP_GITHUB__SELECT_FILTER": "[]",
+          "TAP_GITHUB__USE_CACHED_CATALOG": "true"
         },
         "label": "GitHub",
         "logo_url": "https://hub.meltano.com/assets/logos/extractors/github.png",
@@ -1160,6 +1177,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"repositories.*\", \"pull_requests.*\", \"issues.*\", \"!issues.body\", \"!issues.title\", \"!pull_requests.body\", \"!pull_requests.title\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_GITHUB_MELTANO_ORGANIZATIONS": "[\"MeltanoLabs\", \"meltano\"]",
           "TAP_GITHUB_MELTANO_STREAM_MAPS": "{\"issues.__filter__\": \"record['type'] = 'issue'\"}",
           "TAP_GITHUB_MELTANO_STREAM_MAPS_ISSUES___FILTER__": "record['type'] = 'issue'",
@@ -1168,6 +1186,7 @@
           "TAP_GITHUB_MELTANO__SCHEMA": "{}",
           "TAP_GITHUB_MELTANO__SELECT": "[\"repositories.*\", \"pull_requests.*\", \"issues.*\", \"!issues.body\", \"!issues.title\", \"!pull_requests.body\", \"!pull_requests.title\"]",
           "TAP_GITHUB_MELTANO__SELECT_FILTER": "[]",
+          "TAP_GITHUB_MELTANO__USE_CACHED_CATALOG": "true",
           "TAP_GITHUB_ORGANIZATIONS": "[\"MeltanoLabs\", \"meltano\"]",
           "TAP_GITHUB_STREAM_MAPS": "{\"issues.__filter__\": \"record['type'] = 'issue'\"}",
           "TAP_GITHUB_STREAM_MAPS_ISSUES___FILTER__": "record['type'] = 'issue'",
@@ -1175,7 +1194,8 @@
           "TAP_GITHUB__METADATA": "{}",
           "TAP_GITHUB__SCHEMA": "{}",
           "TAP_GITHUB__SELECT": "[\"repositories.*\", \"pull_requests.*\", \"issues.*\", \"!issues.body\", \"!issues.title\", \"!pull_requests.body\", \"!pull_requests.title\"]",
-          "TAP_GITHUB__SELECT_FILTER": "[]"
+          "TAP_GITHUB__SELECT_FILTER": "[]",
+          "TAP_GITHUB__USE_CACHED_CATALOG": "true"
         },
         "inherit_from": "tap-github",
         "name": "tap-github-meltano",
@@ -1224,6 +1244,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"repositories.*\", \"readme.*\", \"issues.*\", \"pull_requests.*\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_GITHUB_METRICS_LOG_LEVEL": "DEBUG",
           "TAP_GITHUB_SEARCHES": "[{\"name\": \"tap non-forks\", \"query\": \"tap- fork:false language:Python singer in:readme\"}, {\"name\": \"target non-forks\", \"query\": \"target- fork:false language:Python singer in:readme\"}]",
           "TAP_GITHUB_SEARCH_METRICS_LOG_LEVEL": "DEBUG",
@@ -1237,6 +1258,7 @@
           "TAP_GITHUB_SEARCH__SCHEMA": "{}",
           "TAP_GITHUB_SEARCH__SELECT": "[\"repositories.*\", \"readme.*\", \"issues.*\", \"pull_requests.*\"]",
           "TAP_GITHUB_SEARCH__SELECT_FILTER": "[]",
+          "TAP_GITHUB_SEARCH__USE_CACHED_CATALOG": "true",
           "TAP_GITHUB_START_DATE": "2022-02-13",
           "TAP_GITHUB_STREAM_MAPS": "{\"repositories.__filter__\": \"('tap-' in name or 'target-' in full_name) and name != 'singer-tap-template' and name != 'singer-target-template'\\n\", \"issues.__filter__\": \"record['type'] = 'issue'\"}",
           "TAP_GITHUB_STREAM_MAPS_ISSUES___FILTER__": "record['type'] = 'issue'",
@@ -1245,7 +1267,8 @@
           "TAP_GITHUB__METADATA": "{}",
           "TAP_GITHUB__SCHEMA": "{}",
           "TAP_GITHUB__SELECT": "[\"repositories.*\", \"readme.*\", \"issues.*\", \"pull_requests.*\"]",
-          "TAP_GITHUB__SELECT_FILTER": "[]"
+          "TAP_GITHUB__SELECT_FILTER": "[]",
+          "TAP_GITHUB__USE_CACHED_CATALOG": "true"
         },
         "inherit_from": "tap-github",
         "name": "tap-github-search",
@@ -1276,13 +1299,15 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"*.*\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_SNOWFLAKE_ACCOUNT": "epa06486",
           "TAP_SNOWFLAKE_INSECURE_MODE": "False",
           "TAP_SNOWFLAKE__LOAD_SCHEMA": "tap_snowflake",
           "TAP_SNOWFLAKE__METADATA": "{}",
           "TAP_SNOWFLAKE__SCHEMA": "{}",
           "TAP_SNOWFLAKE__SELECT": "[\"*.*\"]",
-          "TAP_SNOWFLAKE__SELECT_FILTER": "[]"
+          "TAP_SNOWFLAKE__SELECT_FILTER": "[]",
+          "TAP_SNOWFLAKE__USE_CACHED_CATALOG": "true"
         },
         "label": "Snowflake",
         "logo_url": "https://hub.meltano.com/assets/logos/extractors/snowflake.png",
@@ -1377,6 +1402,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"*FACT_VARIANT_HUB_METRICS.NAME\", \"*FACT_VARIANT_HUB_METRICS.VARIANT\", \"*FACT_VARIANT_HUB_METRICS.REPO\", \"*FACT_VARIANT_HUB_METRICS.PLUGIN_TYPE\", \"*FACT_VARIANT_HUB_METRICS.PIP_URL\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS_UNSTRUCT_BY_VARIANT\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_PROJECTS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_PROJECTS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_PROJECTS_UNSTRUCT_BY_VARIANT\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS_UNSTRUCT_BY_VARIANT\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_EXECS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_EXECS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_EXECS_UNSTRUCT_BY_VARIANT\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_SNOWFLAKE_ACCOUNT": "epa06486",
           "TAP_SNOWFLAKE_INSECURE_MODE": "False",
           "TAP_SNOWFLAKE_METRICS_ACCOUNT": "epa06486",
@@ -1387,12 +1413,14 @@
           "TAP_SNOWFLAKE_METRICS__SCHEMA": "{}",
           "TAP_SNOWFLAKE_METRICS__SELECT": "[\"*FACT_VARIANT_HUB_METRICS.NAME\", \"*FACT_VARIANT_HUB_METRICS.VARIANT\", \"*FACT_VARIANT_HUB_METRICS.REPO\", \"*FACT_VARIANT_HUB_METRICS.PLUGIN_TYPE\", \"*FACT_VARIANT_HUB_METRICS.PIP_URL\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS_UNSTRUCT_BY_VARIANT\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_PROJECTS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_PROJECTS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_PROJECTS_UNSTRUCT_BY_VARIANT\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS_UNSTRUCT_BY_VARIANT\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_EXECS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_EXECS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_EXECS_UNSTRUCT_BY_VARIANT\"]",
           "TAP_SNOWFLAKE_METRICS__SELECT_FILTER": "[]",
+          "TAP_SNOWFLAKE_METRICS__USE_CACHED_CATALOG": "true",
           "TAP_SNOWFLAKE__LOAD_SCHEMA": "tap_snowflake_metrics",
           "TAP_SNOWFLAKE__METADATA": "{\"*\": {\"replication-method\": \"FULL_TABLE\"}}",
           "TAP_SNOWFLAKE__METADATA___REPLICATION_METHOD": "FULL_TABLE",
           "TAP_SNOWFLAKE__SCHEMA": "{}",
           "TAP_SNOWFLAKE__SELECT": "[\"*FACT_VARIANT_HUB_METRICS.NAME\", \"*FACT_VARIANT_HUB_METRICS.VARIANT\", \"*FACT_VARIANT_HUB_METRICS.REPO\", \"*FACT_VARIANT_HUB_METRICS.PLUGIN_TYPE\", \"*FACT_VARIANT_HUB_METRICS.PIP_URL\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS_UNSTRUCT_BY_VARIANT\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_PROJECTS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_PROJECTS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_PROJECTS_UNSTRUCT_BY_VARIANT\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS_UNSTRUCT_BY_VARIANT\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_EXECS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_EXECS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_EXECS_UNSTRUCT_BY_VARIANT\"]",
-          "TAP_SNOWFLAKE__SELECT_FILTER": "[]"
+          "TAP_SNOWFLAKE__SELECT_FILTER": "[]",
+          "TAP_SNOWFLAKE__USE_CACHED_CATALOG": "true"
         },
         "inherit_from": "tap-snowflake",
         "metadata": {
@@ -1433,6 +1461,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"*HUB_METRICS_AUDIT.UPDATED_DATE\", \"*HUB_METRICS_AUDIT.METRIC_TYPE\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_SNOWFLAKE_ACCOUNT": "epa06486",
           "TAP_SNOWFLAKE_AUDIT_ACCOUNT": "epa06486",
           "TAP_SNOWFLAKE_AUDIT_INSECURE_MODE": "False",
@@ -1442,13 +1471,15 @@
           "TAP_SNOWFLAKE_AUDIT__SCHEMA": "{}",
           "TAP_SNOWFLAKE_AUDIT__SELECT": "[\"*HUB_METRICS_AUDIT.UPDATED_DATE\", \"*HUB_METRICS_AUDIT.METRIC_TYPE\"]",
           "TAP_SNOWFLAKE_AUDIT__SELECT_FILTER": "[]",
+          "TAP_SNOWFLAKE_AUDIT__USE_CACHED_CATALOG": "true",
           "TAP_SNOWFLAKE_INSECURE_MODE": "False",
           "TAP_SNOWFLAKE__LOAD_SCHEMA": "tap_snowflake_audit",
           "TAP_SNOWFLAKE__METADATA": "{\"*\": {\"replication-method\": \"FULL_TABLE\"}}",
           "TAP_SNOWFLAKE__METADATA___REPLICATION_METHOD": "FULL_TABLE",
           "TAP_SNOWFLAKE__SCHEMA": "{}",
           "TAP_SNOWFLAKE__SELECT": "[\"*HUB_METRICS_AUDIT.UPDATED_DATE\", \"*HUB_METRICS_AUDIT.METRIC_TYPE\"]",
-          "TAP_SNOWFLAKE__SELECT_FILTER": "[]"
+          "TAP_SNOWFLAKE__SELECT_FILTER": "[]",
+          "TAP_SNOWFLAKE__USE_CACHED_CATALOG": "true"
         },
         "inherit_from": "tap-snowflake",
         "metadata": {
@@ -1472,6 +1503,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"*SLACK_ALERTS.TITLE\", \"*SLACK_ALERTS.BODY\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_SNOWFLAKE_ACCOUNT": "epa06486",
           "TAP_SNOWFLAKE_INSECURE_MODE": "False",
           "TAP_SNOWFLAKE_SINGER_ACTIVITY_ACCOUNT": "epa06486",
@@ -1482,12 +1514,14 @@
           "TAP_SNOWFLAKE_SINGER_ACTIVITY__SCHEMA": "{}",
           "TAP_SNOWFLAKE_SINGER_ACTIVITY__SELECT": "[\"*SLACK_ALERTS.TITLE\", \"*SLACK_ALERTS.BODY\"]",
           "TAP_SNOWFLAKE_SINGER_ACTIVITY__SELECT_FILTER": "[]",
+          "TAP_SNOWFLAKE_SINGER_ACTIVITY__USE_CACHED_CATALOG": "true",
           "TAP_SNOWFLAKE__LOAD_SCHEMA": "tap_snowflake_singer_activity",
           "TAP_SNOWFLAKE__METADATA": "{\"*\": {\"replication-method\": \"FULL_TABLE\"}}",
           "TAP_SNOWFLAKE__METADATA___REPLICATION_METHOD": "FULL_TABLE",
           "TAP_SNOWFLAKE__SCHEMA": "{}",
           "TAP_SNOWFLAKE__SELECT": "[\"*SLACK_ALERTS.TITLE\", \"*SLACK_ALERTS.BODY\"]",
-          "TAP_SNOWFLAKE__SELECT_FILTER": "[]"
+          "TAP_SNOWFLAKE__SELECT_FILTER": "[]",
+          "TAP_SNOWFLAKE__USE_CACHED_CATALOG": "true"
         },
         "inherit_from": "tap-snowflake",
         "metadata": {
diff --git a/integration/meltano-manifest/expected-manifests/meltano-manifest.prod.json b/integration/meltano-manifest/expected-manifests/meltano-manifest.prod.json
index f728375339..8eb6af19bd 100644
--- a/integration/meltano-manifest/expected-manifests/meltano-manifest.prod.json
+++ b/integration/meltano-manifest/expected-manifests/meltano-manifest.prod.json
@@ -185,6 +185,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"*.*\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_CLOUDWATCH_AWS_REGION_NAME": "us-west-2",
           "TAP_CLOUDWATCH_BATCH_INCREMENT_S": "3600",
           "TAP_CLOUDWATCH_LOG_GROUP_NAME": "API-Gateway-Execution-Logs_i32s35df22/prod",
@@ -194,7 +195,8 @@
           "TAP_CLOUDWATCH__METADATA": "{}",
           "TAP_CLOUDWATCH__SCHEMA": "{}",
           "TAP_CLOUDWATCH__SELECT": "[\"*.*\"]",
-          "TAP_CLOUDWATCH__SELECT_FILTER": "[]"
+          "TAP_CLOUDWATCH__SELECT_FILTER": "[]",
+          "TAP_CLOUDWATCH__USE_CACHED_CATALOG": "true"
         },
         "executable": "tap-cloudwatch",
         "label": "Cloudwatch",
@@ -362,11 +364,13 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"plugins.*\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_MELTANOHUB__LOAD_SCHEMA": "tap_meltanohub",
           "TAP_MELTANOHUB__METADATA": "{}",
           "TAP_MELTANOHUB__SCHEMA": "{}",
           "TAP_MELTANOHUB__SELECT": "[\"plugins.*\"]",
-          "TAP_MELTANOHUB__SELECT_FILTER": "[]"
+          "TAP_MELTANOHUB__SELECT_FILTER": "[]",
+          "TAP_MELTANOHUB__USE_CACHED_CATALOG": "true"
         },
         "label": "Meltanohub",
         "logo_url": "https://hub.meltano.com/assets/logos/extractors/meltanohub.png",
@@ -466,12 +470,14 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"*.*\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_SPREADSHEETS_ANYWHERE_TABLES": "[{\"path\": \"https://ip-ranges.amazonaws.com\", \"format\": \"json\", \"start_date\": \"2020-01-01T00:00:00Z\", \"key_properties\": [\"ip_prefix\"], \"name\": \"aws_ips\", \"pattern\": \"ip-ranges.json\", \"json_path\": \"prefixes\"}, {\"path\": \"https://www.gstatic.com/ipranges\", \"format\": \"json\", \"start_date\": \"2020-01-01T00:00:00Z\", \"key_properties\": [\"id\"], \"name\": \"gcp_ips\", \"pattern\": \"cloud.json\", \"json_path\": \"prefixes\"}, {\"path\": \"https://download.microsoft.com/download/7/1/D/71D86715-5596-4529-9B13-DA13A5DE5B63\", \"format\": \"json\", \"start_date\": \"2020-01-01T00:00:00Z\", \"key_properties\": [\"id\"], \"name\": \"azure_ips\", \"pattern\": \"ServiceTags_Public_20230116.json\", \"json_path\": \"values\"}]",
           "TAP_SPREADSHEETS_ANYWHERE__LOAD_SCHEMA": "tap_spreadsheets_anywhere",
           "TAP_SPREADSHEETS_ANYWHERE__METADATA": "{}",
           "TAP_SPREADSHEETS_ANYWHERE__SCHEMA": "{}",
           "TAP_SPREADSHEETS_ANYWHERE__SELECT": "[\"*.*\"]",
-          "TAP_SPREADSHEETS_ANYWHERE__SELECT_FILTER": "[]"
+          "TAP_SPREADSHEETS_ANYWHERE__SELECT_FILTER": "[]",
+          "TAP_SPREADSHEETS_ANYWHERE__USE_CACHED_CATALOG": "true"
         },
         "label": "Spreadsheets Anywhere",
         "logo_url": "https://hub.meltano.com/assets/logos/extractors/spreadsheets-anywhere.png",
@@ -528,6 +534,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"users.*\", \"channels.*\", \"messages.*\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_SLACK_AUTO_JOIN_CHANNELS": "false",
           "TAP_SLACK_CHANNEL_TYPES": "[\"private_channel\"]",
           "TAP_SLACK_SELECTED_CHANNELS": "[\"C01SK13R9NJ\"]",
@@ -537,7 +544,8 @@
           "TAP_SLACK__METADATA": "{}",
           "TAP_SLACK__SCHEMA": "{}",
           "TAP_SLACK__SELECT": "[\"users.*\", \"channels.*\", \"messages.*\"]",
-          "TAP_SLACK__SELECT_FILTER": "[]"
+          "TAP_SLACK__SELECT_FILTER": "[]",
+          "TAP_SLACK__USE_CACHED_CATALOG": "true"
         },
         "label": "Slack",
         "logo_url": "https://hub.meltano.com/assets/logos/extractors/slack.png",
@@ -697,6 +705,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"channels.*\", \"messages.*\", \"threads.*\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_SLACK_AUTO_JOIN_CHANNELS": "false",
           "TAP_SLACK_CHANNEL_TYPES": "[\"public_channel\"]",
           "TAP_SLACK_PUBLIC_AUTO_JOIN_CHANNELS": "false",
@@ -709,6 +718,7 @@
           "TAP_SLACK_PUBLIC__SCHEMA": "{}",
           "TAP_SLACK_PUBLIC__SELECT": "[\"channels.*\", \"messages.*\", \"threads.*\"]",
           "TAP_SLACK_PUBLIC__SELECT_FILTER": "[]",
+          "TAP_SLACK_PUBLIC__USE_CACHED_CATALOG": "true",
           "TAP_SLACK_SELECTED_CHANNELS": "[]",
           "TAP_SLACK_START_DATE": "2021-01-01",
           "TAP_SLACK_THREAD_LOOKBACK_DAYS": "7",
@@ -716,7 +726,8 @@
           "TAP_SLACK__METADATA": "{}",
           "TAP_SLACK__SCHEMA": "{}",
           "TAP_SLACK__SELECT": "[\"channels.*\", \"messages.*\", \"threads.*\"]",
-          "TAP_SLACK__SELECT_FILTER": "[]"
+          "TAP_SLACK__SELECT_FILTER": "[]",
+          "TAP_SLACK__USE_CACHED_CATALOG": "true"
         },
         "inherit_from": "tap-slack",
         "name": "tap-slack-public",
@@ -751,6 +762,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"*.*\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_GOOGLE_ANALYTICS_REPORTS": "./extract/ga_reports/cli_events_report_definition.json",
           "TAP_GOOGLE_ANALYTICS_START_DATE": "2022-02-20",
           "TAP_GOOGLE_ANALYTICS_VIEW_ID": "188392047",
@@ -758,7 +770,8 @@
           "TAP_GOOGLE_ANALYTICS__METADATA": "{}",
           "TAP_GOOGLE_ANALYTICS__SCHEMA": "{}",
           "TAP_GOOGLE_ANALYTICS__SELECT": "[\"*.*\"]",
-          "TAP_GOOGLE_ANALYTICS__SELECT_FILTER": "[]"
+          "TAP_GOOGLE_ANALYTICS__SELECT_FILTER": "[]",
+          "TAP_GOOGLE_ANALYTICS__USE_CACHED_CATALOG": "true"
         },
         "label": "Google Analytics (Universal Analytics API - Deprecated)",
         "logo_url": "https://hub.meltano.com/assets/logos/extractors/google-analytics.png",
@@ -905,6 +918,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"projects.*\", \"merge_requests.*\", \"issues.*\", \"!issues.description\", \"!issues.title\", \"!merge_requests.description\", \"!merge_requests.title\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_GITLAB_API_URL": "https://gitlab.com",
           "TAP_GITLAB_FETCH_MERGE_REQUEST_COMMITS": "false",
           "TAP_GITLAB_FETCH_PIPELINES_EXTENDED": "false",
@@ -917,7 +931,8 @@
           "TAP_GITLAB__METADATA": "{}",
           "TAP_GITLAB__SCHEMA": "{}",
           "TAP_GITLAB__SELECT": "[\"projects.*\", \"merge_requests.*\", \"issues.*\", \"!issues.description\", \"!issues.title\", \"!merge_requests.description\", \"!merge_requests.title\"]",
-          "TAP_GITLAB__SELECT_FILTER": "[]"
+          "TAP_GITLAB__SELECT_FILTER": "[]",
+          "TAP_GITLAB__USE_CACHED_CATALOG": "true"
         },
         "label": "GitLab",
         "logo_url": "https://hub.meltano.com/assets/logos/extractors/gitlab.png",
@@ -1027,12 +1042,14 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"*.*\", \"!traffic_*.*\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_GITHUB_START_DATE": "2020-01-01",
           "TAP_GITHUB__LOAD_SCHEMA": "tap_github",
           "TAP_GITHUB__METADATA": "{}",
           "TAP_GITHUB__SCHEMA": "{}",
           "TAP_GITHUB__SELECT": "[\"*.*\", \"!traffic_*.*\"]",
-          "TAP_GITHUB__SELECT_FILTER": "[]"
+          "TAP_GITHUB__SELECT_FILTER": "[]",
+          "TAP_GITHUB__USE_CACHED_CATALOG": "true"
         },
         "label": "GitHub",
         "logo_url": "https://hub.meltano.com/assets/logos/extractors/github.png",
@@ -1180,6 +1197,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"repositories.*\", \"pull_requests.*\", \"issues.*\", \"!issues.body\", \"!issues.title\", \"!pull_requests.body\", \"!pull_requests.title\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_GITHUB_MELTANO_ORGANIZATIONS": "[\"MeltanoLabs\", \"meltano\"]",
           "TAP_GITHUB_MELTANO_START_DATE": "2020-01-01",
           "TAP_GITHUB_MELTANO_STREAM_MAPS": "{\"issues.__filter__\": \"record['type'] = 'issue'\"}",
@@ -1189,6 +1207,7 @@
           "TAP_GITHUB_MELTANO__SCHEMA": "{}",
           "TAP_GITHUB_MELTANO__SELECT": "[\"repositories.*\", \"pull_requests.*\", \"issues.*\", \"!issues.body\", \"!issues.title\", \"!pull_requests.body\", \"!pull_requests.title\"]",
           "TAP_GITHUB_MELTANO__SELECT_FILTER": "[]",
+          "TAP_GITHUB_MELTANO__USE_CACHED_CATALOG": "true",
           "TAP_GITHUB_ORGANIZATIONS": "[\"MeltanoLabs\", \"meltano\"]",
           "TAP_GITHUB_START_DATE": "2020-01-01",
           "TAP_GITHUB_STREAM_MAPS": "{\"issues.__filter__\": \"record['type'] = 'issue'\"}",
@@ -1197,7 +1216,8 @@
           "TAP_GITHUB__METADATA": "{}",
           "TAP_GITHUB__SCHEMA": "{}",
           "TAP_GITHUB__SELECT": "[\"repositories.*\", \"pull_requests.*\", \"issues.*\", \"!issues.body\", \"!issues.title\", \"!pull_requests.body\", \"!pull_requests.title\"]",
-          "TAP_GITHUB__SELECT_FILTER": "[]"
+          "TAP_GITHUB__SELECT_FILTER": "[]",
+          "TAP_GITHUB__USE_CACHED_CATALOG": "true"
         },
         "inherit_from": "tap-github",
         "name": "tap-github-meltano",
@@ -1246,6 +1266,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"repositories.*\", \"readme.*\", \"issues.*\", \"pull_requests.*\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_GITHUB_METRICS_LOG_LEVEL": "DEBUG",
           "TAP_GITHUB_SEARCHES": "[{\"name\": \"tap non-forks\", \"query\": \"tap- fork:false language:Python singer in:readme\"}, {\"name\": \"target non-forks\", \"query\": \"target- fork:false language:Python singer in:readme\"}]",
           "TAP_GITHUB_SEARCH_METRICS_LOG_LEVEL": "DEBUG",
@@ -1259,6 +1280,7 @@
           "TAP_GITHUB_SEARCH__SCHEMA": "{}",
           "TAP_GITHUB_SEARCH__SELECT": "[\"repositories.*\", \"readme.*\", \"issues.*\", \"pull_requests.*\"]",
           "TAP_GITHUB_SEARCH__SELECT_FILTER": "[]",
+          "TAP_GITHUB_SEARCH__USE_CACHED_CATALOG": "true",
           "TAP_GITHUB_START_DATE": "2022-02-13",
           "TAP_GITHUB_STREAM_MAPS": "{\"repositories.__filter__\": \"('tap-' in name or 'target-' in full_name) and name != 'singer-tap-template' and name != 'singer-target-template'\\n\", \"issues.__filter__\": \"record['type'] = 'issue'\"}",
           "TAP_GITHUB_STREAM_MAPS_ISSUES___FILTER__": "record['type'] = 'issue'",
@@ -1267,7 +1289,8 @@
           "TAP_GITHUB__METADATA": "{}",
           "TAP_GITHUB__SCHEMA": "{}",
           "TAP_GITHUB__SELECT": "[\"repositories.*\", \"readme.*\", \"issues.*\", \"pull_requests.*\"]",
-          "TAP_GITHUB__SELECT_FILTER": "[]"
+          "TAP_GITHUB__SELECT_FILTER": "[]",
+          "TAP_GITHUB__USE_CACHED_CATALOG": "true"
         },
         "inherit_from": "tap-github",
         "name": "tap-github-search",
@@ -1306,6 +1329,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"*.*\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_SNOWFLAKE_ACCOUNT": "epa06486",
           "TAP_SNOWFLAKE_DBNAME": "PROD",
           "TAP_SNOWFLAKE_INSECURE_MODE": "False",
@@ -1316,7 +1340,8 @@
           "TAP_SNOWFLAKE__METADATA": "{}",
           "TAP_SNOWFLAKE__SCHEMA": "{}",
           "TAP_SNOWFLAKE__SELECT": "[\"*.*\"]",
-          "TAP_SNOWFLAKE__SELECT_FILTER": "[]"
+          "TAP_SNOWFLAKE__SELECT_FILTER": "[]",
+          "TAP_SNOWFLAKE__USE_CACHED_CATALOG": "true"
         },
         "label": "Snowflake",
         "logo_url": "https://hub.meltano.com/assets/logos/extractors/snowflake.png",
@@ -1419,6 +1444,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"*FACT_VARIANT_HUB_METRICS.NAME\", \"*FACT_VARIANT_HUB_METRICS.VARIANT\", \"*FACT_VARIANT_HUB_METRICS.REPO\", \"*FACT_VARIANT_HUB_METRICS.PLUGIN_TYPE\", \"*FACT_VARIANT_HUB_METRICS.PIP_URL\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS_UNSTRUCT_BY_VARIANT\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_PROJECTS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_PROJECTS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_PROJECTS_UNSTRUCT_BY_VARIANT\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS_UNSTRUCT_BY_VARIANT\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_EXECS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_EXECS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_EXECS_UNSTRUCT_BY_VARIANT\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_SNOWFLAKE_ACCOUNT": "epa06486",
           "TAP_SNOWFLAKE_DBNAME": "PROD",
           "TAP_SNOWFLAKE_INSECURE_MODE": "False",
@@ -1435,6 +1461,7 @@
           "TAP_SNOWFLAKE_METRICS__SCHEMA": "{}",
           "TAP_SNOWFLAKE_METRICS__SELECT": "[\"*FACT_VARIANT_HUB_METRICS.NAME\", \"*FACT_VARIANT_HUB_METRICS.VARIANT\", \"*FACT_VARIANT_HUB_METRICS.REPO\", \"*FACT_VARIANT_HUB_METRICS.PLUGIN_TYPE\", \"*FACT_VARIANT_HUB_METRICS.PIP_URL\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS_UNSTRUCT_BY_VARIANT\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_PROJECTS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_PROJECTS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_PROJECTS_UNSTRUCT_BY_VARIANT\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS_UNSTRUCT_BY_VARIANT\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_EXECS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_EXECS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_EXECS_UNSTRUCT_BY_VARIANT\"]",
           "TAP_SNOWFLAKE_METRICS__SELECT_FILTER": "[]",
+          "TAP_SNOWFLAKE_METRICS__USE_CACHED_CATALOG": "true",
           "TAP_SNOWFLAKE_ROLE": "REPORTER",
           "TAP_SNOWFLAKE_TABLES": "PROD.MELTANO_HUB.FACT_VARIANT_HUB_METRICS",
           "TAP_SNOWFLAKE_USER": "MELTANO",
@@ -1444,7 +1471,8 @@
           "TAP_SNOWFLAKE__METADATA___REPLICATION_METHOD": "FULL_TABLE",
           "TAP_SNOWFLAKE__SCHEMA": "{}",
           "TAP_SNOWFLAKE__SELECT": "[\"*FACT_VARIANT_HUB_METRICS.NAME\", \"*FACT_VARIANT_HUB_METRICS.VARIANT\", \"*FACT_VARIANT_HUB_METRICS.REPO\", \"*FACT_VARIANT_HUB_METRICS.PLUGIN_TYPE\", \"*FACT_VARIANT_HUB_METRICS.PIP_URL\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS_UNSTRUCT_BY_VARIANT\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_PROJECTS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_PROJECTS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_PROJECTS_UNSTRUCT_BY_VARIANT\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS_UNSTRUCT_BY_VARIANT\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_EXECS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_EXECS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_EXECS_UNSTRUCT_BY_VARIANT\"]",
-          "TAP_SNOWFLAKE__SELECT_FILTER": "[]"
+          "TAP_SNOWFLAKE__SELECT_FILTER": "[]",
+          "TAP_SNOWFLAKE__USE_CACHED_CATALOG": "true"
         },
         "inherit_from": "tap-snowflake",
         "metadata": {
@@ -1493,6 +1521,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"*HUB_METRICS_AUDIT.UPDATED_DATE\", \"*HUB_METRICS_AUDIT.METRIC_TYPE\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_SNOWFLAKE_ACCOUNT": "epa06486",
           "TAP_SNOWFLAKE_AUDIT_ACCOUNT": "epa06486",
           "TAP_SNOWFLAKE_AUDIT_DBNAME": "PROD",
@@ -1507,6 +1536,7 @@
           "TAP_SNOWFLAKE_AUDIT__SCHEMA": "{}",
           "TAP_SNOWFLAKE_AUDIT__SELECT": "[\"*HUB_METRICS_AUDIT.UPDATED_DATE\", \"*HUB_METRICS_AUDIT.METRIC_TYPE\"]",
           "TAP_SNOWFLAKE_AUDIT__SELECT_FILTER": "[]",
+          "TAP_SNOWFLAKE_AUDIT__USE_CACHED_CATALOG": "true",
           "TAP_SNOWFLAKE_DBNAME": "PROD",
           "TAP_SNOWFLAKE_INSECURE_MODE": "False",
           "TAP_SNOWFLAKE_ROLE": "REPORTER",
@@ -1518,7 +1548,8 @@
           "TAP_SNOWFLAKE__METADATA___REPLICATION_METHOD": "FULL_TABLE",
           "TAP_SNOWFLAKE__SCHEMA": "{}",
           "TAP_SNOWFLAKE__SELECT": "[\"*HUB_METRICS_AUDIT.UPDATED_DATE\", \"*HUB_METRICS_AUDIT.METRIC_TYPE\"]",
-          "TAP_SNOWFLAKE__SELECT_FILTER": "[]"
+          "TAP_SNOWFLAKE__SELECT_FILTER": "[]",
+          "TAP_SNOWFLAKE__USE_CACHED_CATALOG": "true"
         },
         "inherit_from": "tap-snowflake",
         "metadata": {
@@ -1550,6 +1581,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"*SLACK_ALERTS.TITLE\", \"*SLACK_ALERTS.BODY\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_SNOWFLAKE_ACCOUNT": "epa06486",
           "TAP_SNOWFLAKE_DBNAME": "PROD",
           "TAP_SNOWFLAKE_INSECURE_MODE": "False",
@@ -1567,6 +1599,7 @@
           "TAP_SNOWFLAKE_SINGER_ACTIVITY__SCHEMA": "{}",
           "TAP_SNOWFLAKE_SINGER_ACTIVITY__SELECT": "[\"*SLACK_ALERTS.TITLE\", \"*SLACK_ALERTS.BODY\"]",
           "TAP_SNOWFLAKE_SINGER_ACTIVITY__SELECT_FILTER": "[]",
+          "TAP_SNOWFLAKE_SINGER_ACTIVITY__USE_CACHED_CATALOG": "true",
           "TAP_SNOWFLAKE_TABLES": "PROD.SLACK_NOTIFICATIONS.SLACK_ALERTS",
           "TAP_SNOWFLAKE_USER": "MELTANO",
           "TAP_SNOWFLAKE_WAREHOUSE": "REPORTER",
@@ -1575,7 +1608,8 @@
           "TAP_SNOWFLAKE__METADATA___REPLICATION_METHOD": "FULL_TABLE",
           "TAP_SNOWFLAKE__SCHEMA": "{}",
           "TAP_SNOWFLAKE__SELECT": "[\"*SLACK_ALERTS.TITLE\", \"*SLACK_ALERTS.BODY\"]",
-          "TAP_SNOWFLAKE__SELECT_FILTER": "[]"
+          "TAP_SNOWFLAKE__SELECT_FILTER": "[]",
+          "TAP_SNOWFLAKE__USE_CACHED_CATALOG": "true"
         },
         "inherit_from": "tap-snowflake",
         "metadata": {
diff --git a/integration/meltano-manifest/expected-manifests/meltano-manifest.staging.json b/integration/meltano-manifest/expected-manifests/meltano-manifest.staging.json
index a31aa17de2..e44e2a61c5 100644
--- a/integration/meltano-manifest/expected-manifests/meltano-manifest.staging.json
+++ b/integration/meltano-manifest/expected-manifests/meltano-manifest.staging.json
@@ -181,6 +181,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"*.*\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_CLOUDWATCH_AWS_REGION_NAME": "us-west-2",
           "TAP_CLOUDWATCH_BATCH_INCREMENT_S": "3600",
           "TAP_CLOUDWATCH_LOG_GROUP_NAME": "API-Gateway-Execution-Logs_i32s35df22/prod",
@@ -190,7 +191,8 @@
           "TAP_CLOUDWATCH__METADATA": "{}",
           "TAP_CLOUDWATCH__SCHEMA": "{}",
           "TAP_CLOUDWATCH__SELECT": "[\"*.*\"]",
-          "TAP_CLOUDWATCH__SELECT_FILTER": "[]"
+          "TAP_CLOUDWATCH__SELECT_FILTER": "[]",
+          "TAP_CLOUDWATCH__USE_CACHED_CATALOG": "true"
         },
         "executable": "tap-cloudwatch",
         "label": "Cloudwatch",
@@ -358,11 +360,13 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"plugins.*\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_MELTANOHUB__LOAD_SCHEMA": "tap_meltanohub",
           "TAP_MELTANOHUB__METADATA": "{}",
           "TAP_MELTANOHUB__SCHEMA": "{}",
           "TAP_MELTANOHUB__SELECT": "[\"plugins.*\"]",
-          "TAP_MELTANOHUB__SELECT_FILTER": "[]"
+          "TAP_MELTANOHUB__SELECT_FILTER": "[]",
+          "TAP_MELTANOHUB__USE_CACHED_CATALOG": "true"
         },
         "label": "Meltanohub",
         "logo_url": "https://hub.meltano.com/assets/logos/extractors/meltanohub.png",
@@ -462,12 +466,14 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"*.*\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_SPREADSHEETS_ANYWHERE_TABLES": "[{\"path\": \"https://ip-ranges.amazonaws.com\", \"format\": \"json\", \"start_date\": \"2020-01-01T00:00:00Z\", \"key_properties\": [\"ip_prefix\"], \"name\": \"aws_ips\", \"pattern\": \"ip-ranges.json\", \"json_path\": \"prefixes\"}, {\"path\": \"https://www.gstatic.com/ipranges\", \"format\": \"json\", \"start_date\": \"2020-01-01T00:00:00Z\", \"key_properties\": [\"id\"], \"name\": \"gcp_ips\", \"pattern\": \"cloud.json\", \"json_path\": \"prefixes\"}, {\"path\": \"https://download.microsoft.com/download/7/1/D/71D86715-5596-4529-9B13-DA13A5DE5B63\", \"format\": \"json\", \"start_date\": \"2020-01-01T00:00:00Z\", \"key_properties\": [\"id\"], \"name\": \"azure_ips\", \"pattern\": \"ServiceTags_Public_20230116.json\", \"json_path\": \"values\"}]",
           "TAP_SPREADSHEETS_ANYWHERE__LOAD_SCHEMA": "tap_spreadsheets_anywhere",
           "TAP_SPREADSHEETS_ANYWHERE__METADATA": "{}",
           "TAP_SPREADSHEETS_ANYWHERE__SCHEMA": "{}",
           "TAP_SPREADSHEETS_ANYWHERE__SELECT": "[\"*.*\"]",
-          "TAP_SPREADSHEETS_ANYWHERE__SELECT_FILTER": "[]"
+          "TAP_SPREADSHEETS_ANYWHERE__SELECT_FILTER": "[]",
+          "TAP_SPREADSHEETS_ANYWHERE__USE_CACHED_CATALOG": "true"
         },
         "label": "Spreadsheets Anywhere",
         "logo_url": "https://hub.meltano.com/assets/logos/extractors/spreadsheets-anywhere.png",
@@ -524,6 +530,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"users.*\", \"channels.*\", \"messages.*\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_SLACK_AUTO_JOIN_CHANNELS": "false",
           "TAP_SLACK_CHANNEL_TYPES": "[\"private_channel\"]",
           "TAP_SLACK_SELECTED_CHANNELS": "[\"C01SK13R9NJ\"]",
@@ -533,7 +540,8 @@
           "TAP_SLACK__METADATA": "{}",
           "TAP_SLACK__SCHEMA": "{}",
           "TAP_SLACK__SELECT": "[\"users.*\", \"channels.*\", \"messages.*\"]",
-          "TAP_SLACK__SELECT_FILTER": "[]"
+          "TAP_SLACK__SELECT_FILTER": "[]",
+          "TAP_SLACK__USE_CACHED_CATALOG": "true"
         },
         "label": "Slack",
         "logo_url": "https://hub.meltano.com/assets/logos/extractors/slack.png",
@@ -693,6 +701,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"channels.*\", \"messages.*\", \"threads.*\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_SLACK_AUTO_JOIN_CHANNELS": "false",
           "TAP_SLACK_CHANNEL_TYPES": "[\"public_channel\"]",
           "TAP_SLACK_PUBLIC_AUTO_JOIN_CHANNELS": "false",
@@ -705,6 +714,7 @@
           "TAP_SLACK_PUBLIC__SCHEMA": "{}",
           "TAP_SLACK_PUBLIC__SELECT": "[\"channels.*\", \"messages.*\", \"threads.*\"]",
           "TAP_SLACK_PUBLIC__SELECT_FILTER": "[]",
+          "TAP_SLACK_PUBLIC__USE_CACHED_CATALOG": "true",
           "TAP_SLACK_SELECTED_CHANNELS": "[]",
           "TAP_SLACK_START_DATE": "2021-01-01",
           "TAP_SLACK_THREAD_LOOKBACK_DAYS": "7",
@@ -712,7 +722,8 @@
           "TAP_SLACK__METADATA": "{}",
           "TAP_SLACK__SCHEMA": "{}",
           "TAP_SLACK__SELECT": "[\"channels.*\", \"messages.*\", \"threads.*\"]",
-          "TAP_SLACK__SELECT_FILTER": "[]"
+          "TAP_SLACK__SELECT_FILTER": "[]",
+          "TAP_SLACK__USE_CACHED_CATALOG": "true"
         },
         "inherit_from": "tap-slack",
         "name": "tap-slack-public",
@@ -747,6 +758,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"*.*\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_GOOGLE_ANALYTICS_REPORTS": "./extract/ga_reports/cli_events_report_definition.json",
           "TAP_GOOGLE_ANALYTICS_START_DATE": "2022-02-20",
           "TAP_GOOGLE_ANALYTICS_VIEW_ID": "188392047",
@@ -754,7 +766,8 @@
           "TAP_GOOGLE_ANALYTICS__METADATA": "{}",
           "TAP_GOOGLE_ANALYTICS__SCHEMA": "{}",
           "TAP_GOOGLE_ANALYTICS__SELECT": "[\"*.*\"]",
-          "TAP_GOOGLE_ANALYTICS__SELECT_FILTER": "[]"
+          "TAP_GOOGLE_ANALYTICS__SELECT_FILTER": "[]",
+          "TAP_GOOGLE_ANALYTICS__USE_CACHED_CATALOG": "true"
         },
         "label": "Google Analytics (Universal Analytics API - Deprecated)",
         "logo_url": "https://hub.meltano.com/assets/logos/extractors/google-analytics.png",
@@ -901,6 +914,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"projects.*\", \"merge_requests.*\", \"issues.*\", \"!issues.description\", \"!issues.title\", \"!merge_requests.description\", \"!merge_requests.title\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_GITLAB_API_URL": "https://gitlab.com",
           "TAP_GITLAB_FETCH_MERGE_REQUEST_COMMITS": "false",
           "TAP_GITLAB_FETCH_PIPELINES_EXTENDED": "false",
@@ -913,7 +927,8 @@
           "TAP_GITLAB__METADATA": "{}",
           "TAP_GITLAB__SCHEMA": "{}",
           "TAP_GITLAB__SELECT": "[\"projects.*\", \"merge_requests.*\", \"issues.*\", \"!issues.description\", \"!issues.title\", \"!merge_requests.description\", \"!merge_requests.title\"]",
-          "TAP_GITLAB__SELECT_FILTER": "[]"
+          "TAP_GITLAB__SELECT_FILTER": "[]",
+          "TAP_GITLAB__USE_CACHED_CATALOG": "true"
         },
         "label": "GitLab",
         "logo_url": "https://hub.meltano.com/assets/logos/extractors/gitlab.png",
@@ -1023,12 +1038,14 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"*.*\", \"!traffic_*.*\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_GITHUB_START_DATE": "2020-01-01",
           "TAP_GITHUB__LOAD_SCHEMA": "tap_github",
           "TAP_GITHUB__METADATA": "{}",
           "TAP_GITHUB__SCHEMA": "{}",
           "TAP_GITHUB__SELECT": "[\"*.*\", \"!traffic_*.*\"]",
-          "TAP_GITHUB__SELECT_FILTER": "[]"
+          "TAP_GITHUB__SELECT_FILTER": "[]",
+          "TAP_GITHUB__USE_CACHED_CATALOG": "true"
         },
         "label": "GitHub",
         "logo_url": "https://hub.meltano.com/assets/logos/extractors/github.png",
@@ -1176,6 +1193,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"repositories.*\", \"pull_requests.*\", \"issues.*\", \"!issues.body\", \"!issues.title\", \"!pull_requests.body\", \"!pull_requests.title\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_GITHUB_MELTANO_ORGANIZATIONS": "[\"MeltanoLabs\", \"meltano\"]",
           "TAP_GITHUB_MELTANO_START_DATE": "2020-01-01",
           "TAP_GITHUB_MELTANO_STREAM_MAPS": "{\"issues.__filter__\": \"record['type'] = 'issue'\"}",
@@ -1185,6 +1203,7 @@
           "TAP_GITHUB_MELTANO__SCHEMA": "{}",
           "TAP_GITHUB_MELTANO__SELECT": "[\"repositories.*\", \"pull_requests.*\", \"issues.*\", \"!issues.body\", \"!issues.title\", \"!pull_requests.body\", \"!pull_requests.title\"]",
           "TAP_GITHUB_MELTANO__SELECT_FILTER": "[]",
+          "TAP_GITHUB_MELTANO__USE_CACHED_CATALOG": "true",
           "TAP_GITHUB_ORGANIZATIONS": "[\"MeltanoLabs\", \"meltano\"]",
           "TAP_GITHUB_START_DATE": "2020-01-01",
           "TAP_GITHUB_STREAM_MAPS": "{\"issues.__filter__\": \"record['type'] = 'issue'\"}",
@@ -1193,7 +1212,8 @@
           "TAP_GITHUB__METADATA": "{}",
           "TAP_GITHUB__SCHEMA": "{}",
           "TAP_GITHUB__SELECT": "[\"repositories.*\", \"pull_requests.*\", \"issues.*\", \"!issues.body\", \"!issues.title\", \"!pull_requests.body\", \"!pull_requests.title\"]",
-          "TAP_GITHUB__SELECT_FILTER": "[]"
+          "TAP_GITHUB__SELECT_FILTER": "[]",
+          "TAP_GITHUB__USE_CACHED_CATALOG": "true"
         },
         "inherit_from": "tap-github",
         "name": "tap-github-meltano",
@@ -1242,6 +1262,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"repositories.*\", \"readme.*\", \"issues.*\", \"pull_requests.*\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_GITHUB_METRICS_LOG_LEVEL": "DEBUG",
           "TAP_GITHUB_SEARCHES": "[{\"name\": \"tap non-forks\", \"query\": \"tap- fork:false language:Python singer in:readme\"}, {\"name\": \"target non-forks\", \"query\": \"target- fork:false language:Python singer in:readme\"}]",
           "TAP_GITHUB_SEARCH_METRICS_LOG_LEVEL": "DEBUG",
@@ -1255,6 +1276,7 @@
           "TAP_GITHUB_SEARCH__SCHEMA": "{}",
           "TAP_GITHUB_SEARCH__SELECT": "[\"repositories.*\", \"readme.*\", \"issues.*\", \"pull_requests.*\"]",
           "TAP_GITHUB_SEARCH__SELECT_FILTER": "[]",
+          "TAP_GITHUB_SEARCH__USE_CACHED_CATALOG": "true",
           "TAP_GITHUB_START_DATE": "2022-02-13",
           "TAP_GITHUB_STREAM_MAPS": "{\"repositories.__filter__\": \"('tap-' in name or 'target-' in full_name) and name != 'singer-tap-template' and name != 'singer-target-template'\\n\", \"issues.__filter__\": \"record['type'] = 'issue'\"}",
           "TAP_GITHUB_STREAM_MAPS_ISSUES___FILTER__": "record['type'] = 'issue'",
@@ -1263,7 +1285,8 @@
           "TAP_GITHUB__METADATA": "{}",
           "TAP_GITHUB__SCHEMA": "{}",
           "TAP_GITHUB__SELECT": "[\"repositories.*\", \"readme.*\", \"issues.*\", \"pull_requests.*\"]",
-          "TAP_GITHUB__SELECT_FILTER": "[]"
+          "TAP_GITHUB__SELECT_FILTER": "[]",
+          "TAP_GITHUB__USE_CACHED_CATALOG": "true"
         },
         "inherit_from": "tap-github",
         "name": "tap-github-search",
@@ -1302,6 +1325,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"*.*\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_SNOWFLAKE_ACCOUNT": "epa06486",
           "TAP_SNOWFLAKE_DBNAME": "STAGING_PROD",
           "TAP_SNOWFLAKE_INSECURE_MODE": "False",
@@ -1312,7 +1336,8 @@
           "TAP_SNOWFLAKE__METADATA": "{}",
           "TAP_SNOWFLAKE__SCHEMA": "{}",
           "TAP_SNOWFLAKE__SELECT": "[\"*.*\"]",
-          "TAP_SNOWFLAKE__SELECT_FILTER": "[]"
+          "TAP_SNOWFLAKE__SELECT_FILTER": "[]",
+          "TAP_SNOWFLAKE__USE_CACHED_CATALOG": "true"
         },
         "label": "Snowflake",
         "logo_url": "https://hub.meltano.com/assets/logos/extractors/snowflake.png",
@@ -1415,6 +1440,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"*FACT_VARIANT_HUB_METRICS.NAME\", \"*FACT_VARIANT_HUB_METRICS.VARIANT\", \"*FACT_VARIANT_HUB_METRICS.REPO\", \"*FACT_VARIANT_HUB_METRICS.PLUGIN_TYPE\", \"*FACT_VARIANT_HUB_METRICS.PIP_URL\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS_UNSTRUCT_BY_VARIANT\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_PROJECTS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_PROJECTS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_PROJECTS_UNSTRUCT_BY_VARIANT\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS_UNSTRUCT_BY_VARIANT\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_EXECS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_EXECS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_EXECS_UNSTRUCT_BY_VARIANT\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_SNOWFLAKE_ACCOUNT": "epa06486",
           "TAP_SNOWFLAKE_DBNAME": "STAGING_PROD",
           "TAP_SNOWFLAKE_INSECURE_MODE": "False",
@@ -1431,6 +1457,7 @@
           "TAP_SNOWFLAKE_METRICS__SCHEMA": "{}",
           "TAP_SNOWFLAKE_METRICS__SELECT": "[\"*FACT_VARIANT_HUB_METRICS.NAME\", \"*FACT_VARIANT_HUB_METRICS.VARIANT\", \"*FACT_VARIANT_HUB_METRICS.REPO\", \"*FACT_VARIANT_HUB_METRICS.PLUGIN_TYPE\", \"*FACT_VARIANT_HUB_METRICS.PIP_URL\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS_UNSTRUCT_BY_VARIANT\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_PROJECTS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_PROJECTS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_PROJECTS_UNSTRUCT_BY_VARIANT\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS_UNSTRUCT_BY_VARIANT\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_EXECS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_EXECS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_EXECS_UNSTRUCT_BY_VARIANT\"]",
           "TAP_SNOWFLAKE_METRICS__SELECT_FILTER": "[]",
+          "TAP_SNOWFLAKE_METRICS__USE_CACHED_CATALOG": "true",
           "TAP_SNOWFLAKE_ROLE": "STAGING",
           "TAP_SNOWFLAKE_TABLES": "STAGING_PROD.MELTANO_HUB.FACT_VARIANT_HUB_METRICS",
           "TAP_SNOWFLAKE_USER": "STAGING",
@@ -1440,7 +1467,8 @@
           "TAP_SNOWFLAKE__METADATA___REPLICATION_METHOD": "FULL_TABLE",
           "TAP_SNOWFLAKE__SCHEMA": "{}",
           "TAP_SNOWFLAKE__SELECT": "[\"*FACT_VARIANT_HUB_METRICS.NAME\", \"*FACT_VARIANT_HUB_METRICS.VARIANT\", \"*FACT_VARIANT_HUB_METRICS.REPO\", \"*FACT_VARIANT_HUB_METRICS.PLUGIN_TYPE\", \"*FACT_VARIANT_HUB_METRICS.PIP_URL\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS_UNSTRUCT_BY_VARIANT\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_PROJECTS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_PROJECTS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_PROJECTS_UNSTRUCT_BY_VARIANT\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS_UNSTRUCT_BY_VARIANT\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_EXECS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_EXECS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_EXECS_UNSTRUCT_BY_VARIANT\"]",
-          "TAP_SNOWFLAKE__SELECT_FILTER": "[]"
+          "TAP_SNOWFLAKE__SELECT_FILTER": "[]",
+          "TAP_SNOWFLAKE__USE_CACHED_CATALOG": "true"
         },
         "inherit_from": "tap-snowflake",
         "metadata": {
@@ -1489,6 +1517,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"*HUB_METRICS_AUDIT.UPDATED_DATE\", \"*HUB_METRICS_AUDIT.METRIC_TYPE\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_SNOWFLAKE_ACCOUNT": "epa06486",
           "TAP_SNOWFLAKE_AUDIT_ACCOUNT": "epa06486",
           "TAP_SNOWFLAKE_AUDIT_DBNAME": "STAGING_PROD",
@@ -1503,6 +1532,7 @@
           "TAP_SNOWFLAKE_AUDIT__SCHEMA": "{}",
           "TAP_SNOWFLAKE_AUDIT__SELECT": "[\"*HUB_METRICS_AUDIT.UPDATED_DATE\", \"*HUB_METRICS_AUDIT.METRIC_TYPE\"]",
           "TAP_SNOWFLAKE_AUDIT__SELECT_FILTER": "[]",
+          "TAP_SNOWFLAKE_AUDIT__USE_CACHED_CATALOG": "true",
           "TAP_SNOWFLAKE_DBNAME": "STAGING_PROD",
           "TAP_SNOWFLAKE_INSECURE_MODE": "False",
           "TAP_SNOWFLAKE_ROLE": "STAGING",
@@ -1514,7 +1544,8 @@
           "TAP_SNOWFLAKE__METADATA___REPLICATION_METHOD": "FULL_TABLE",
           "TAP_SNOWFLAKE__SCHEMA": "{}",
           "TAP_SNOWFLAKE__SELECT": "[\"*HUB_METRICS_AUDIT.UPDATED_DATE\", \"*HUB_METRICS_AUDIT.METRIC_TYPE\"]",
-          "TAP_SNOWFLAKE__SELECT_FILTER": "[]"
+          "TAP_SNOWFLAKE__SELECT_FILTER": "[]",
+          "TAP_SNOWFLAKE__USE_CACHED_CATALOG": "true"
         },
         "inherit_from": "tap-snowflake",
         "metadata": {
@@ -1546,6 +1577,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"*SLACK_ALERTS.TITLE\", \"*SLACK_ALERTS.BODY\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_SNOWFLAKE_ACCOUNT": "epa06486",
           "TAP_SNOWFLAKE_DBNAME": "STAGING_PROD",
           "TAP_SNOWFLAKE_INSECURE_MODE": "False",
@@ -1563,6 +1595,7 @@
           "TAP_SNOWFLAKE_SINGER_ACTIVITY__SCHEMA": "{}",
           "TAP_SNOWFLAKE_SINGER_ACTIVITY__SELECT": "[\"*SLACK_ALERTS.TITLE\", \"*SLACK_ALERTS.BODY\"]",
           "TAP_SNOWFLAKE_SINGER_ACTIVITY__SELECT_FILTER": "[]",
+          "TAP_SNOWFLAKE_SINGER_ACTIVITY__USE_CACHED_CATALOG": "true",
           "TAP_SNOWFLAKE_TABLES": "STAGING_PROD.SLACK_NOTIFICATIONS.SLACK_ALERTS",
           "TAP_SNOWFLAKE_USER": "STAGING",
           "TAP_SNOWFLAKE_WAREHOUSE": "STAGING",
@@ -1571,7 +1604,8 @@
           "TAP_SNOWFLAKE__METADATA___REPLICATION_METHOD": "FULL_TABLE",
           "TAP_SNOWFLAKE__SCHEMA": "{}",
           "TAP_SNOWFLAKE__SELECT": "[\"*SLACK_ALERTS.TITLE\", \"*SLACK_ALERTS.BODY\"]",
-          "TAP_SNOWFLAKE__SELECT_FILTER": "[]"
+          "TAP_SNOWFLAKE__SELECT_FILTER": "[]",
+          "TAP_SNOWFLAKE__USE_CACHED_CATALOG": "true"
         },
         "inherit_from": "tap-snowflake",
         "metadata": {
diff --git a/integration/meltano-manifest/expected-manifests/meltano-manifest.userdev.json b/integration/meltano-manifest/expected-manifests/meltano-manifest.userdev.json
index 06c2cce4f2..2ef6a1da4c 100644
--- a/integration/meltano-manifest/expected-manifests/meltano-manifest.userdev.json
+++ b/integration/meltano-manifest/expected-manifests/meltano-manifest.userdev.json
@@ -192,6 +192,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"*.*\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_CLOUDWATCH_AWS_REGION_NAME": "us-west-2",
           "TAP_CLOUDWATCH_BATCH_INCREMENT_S": "3600",
           "TAP_CLOUDWATCH_LOG_GROUP_NAME": "API-Gateway-Execution-Logs_i32s35df22/prod",
@@ -201,7 +202,8 @@
           "TAP_CLOUDWATCH__METADATA": "{}",
           "TAP_CLOUDWATCH__SCHEMA": "{}",
           "TAP_CLOUDWATCH__SELECT": "[\"*.*\"]",
-          "TAP_CLOUDWATCH__SELECT_FILTER": "[]"
+          "TAP_CLOUDWATCH__SELECT_FILTER": "[]",
+          "TAP_CLOUDWATCH__USE_CACHED_CATALOG": "true"
         },
         "executable": "tap-cloudwatch",
         "label": "Cloudwatch",
@@ -369,11 +371,13 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"plugins.*\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_MELTANOHUB__LOAD_SCHEMA": "tap_meltanohub",
           "TAP_MELTANOHUB__METADATA": "{}",
           "TAP_MELTANOHUB__SCHEMA": "{}",
           "TAP_MELTANOHUB__SELECT": "[\"plugins.*\"]",
-          "TAP_MELTANOHUB__SELECT_FILTER": "[]"
+          "TAP_MELTANOHUB__SELECT_FILTER": "[]",
+          "TAP_MELTANOHUB__USE_CACHED_CATALOG": "true"
         },
         "label": "Meltanohub",
         "logo_url": "https://hub.meltano.com/assets/logos/extractors/meltanohub.png",
@@ -473,12 +477,14 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"*.*\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_SPREADSHEETS_ANYWHERE_TABLES": "[{\"path\": \"https://ip-ranges.amazonaws.com\", \"format\": \"json\", \"start_date\": \"2020-01-01T00:00:00Z\", \"key_properties\": [\"ip_prefix\"], \"name\": \"aws_ips\", \"pattern\": \"ip-ranges.json\", \"json_path\": \"prefixes\"}, {\"path\": \"https://www.gstatic.com/ipranges\", \"format\": \"json\", \"start_date\": \"2020-01-01T00:00:00Z\", \"key_properties\": [\"id\"], \"name\": \"gcp_ips\", \"pattern\": \"cloud.json\", \"json_path\": \"prefixes\"}, {\"path\": \"https://download.microsoft.com/download/7/1/D/71D86715-5596-4529-9B13-DA13A5DE5B63\", \"format\": \"json\", \"start_date\": \"2020-01-01T00:00:00Z\", \"key_properties\": [\"id\"], \"name\": \"azure_ips\", \"pattern\": \"ServiceTags_Public_20230116.json\", \"json_path\": \"values\"}]",
           "TAP_SPREADSHEETS_ANYWHERE__LOAD_SCHEMA": "tap_spreadsheets_anywhere",
           "TAP_SPREADSHEETS_ANYWHERE__METADATA": "{}",
           "TAP_SPREADSHEETS_ANYWHERE__SCHEMA": "{}",
           "TAP_SPREADSHEETS_ANYWHERE__SELECT": "[\"*.*\"]",
-          "TAP_SPREADSHEETS_ANYWHERE__SELECT_FILTER": "[]"
+          "TAP_SPREADSHEETS_ANYWHERE__SELECT_FILTER": "[]",
+          "TAP_SPREADSHEETS_ANYWHERE__USE_CACHED_CATALOG": "true"
         },
         "label": "Spreadsheets Anywhere",
         "logo_url": "https://hub.meltano.com/assets/logos/extractors/spreadsheets-anywhere.png",
@@ -535,6 +541,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"users.*\", \"channels.*\", \"messages.*\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_SLACK_AUTO_JOIN_CHANNELS": "false",
           "TAP_SLACK_CHANNEL_TYPES": "[\"private_channel\"]",
           "TAP_SLACK_SELECTED_CHANNELS": "[\"C01SK13R9NJ\"]",
@@ -544,7 +551,8 @@
           "TAP_SLACK__METADATA": "{}",
           "TAP_SLACK__SCHEMA": "{}",
           "TAP_SLACK__SELECT": "[\"users.*\", \"channels.*\", \"messages.*\"]",
-          "TAP_SLACK__SELECT_FILTER": "[]"
+          "TAP_SLACK__SELECT_FILTER": "[]",
+          "TAP_SLACK__USE_CACHED_CATALOG": "true"
         },
         "label": "Slack",
         "logo_url": "https://hub.meltano.com/assets/logos/extractors/slack.png",
@@ -704,6 +712,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"channels.*\", \"messages.*\", \"threads.*\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_SLACK_AUTO_JOIN_CHANNELS": "false",
           "TAP_SLACK_CHANNEL_TYPES": "[\"public_channel\"]",
           "TAP_SLACK_PUBLIC_AUTO_JOIN_CHANNELS": "false",
@@ -716,6 +725,7 @@
           "TAP_SLACK_PUBLIC__SCHEMA": "{}",
           "TAP_SLACK_PUBLIC__SELECT": "[\"channels.*\", \"messages.*\", \"threads.*\"]",
           "TAP_SLACK_PUBLIC__SELECT_FILTER": "[]",
+          "TAP_SLACK_PUBLIC__USE_CACHED_CATALOG": "true",
           "TAP_SLACK_SELECTED_CHANNELS": "[]",
           "TAP_SLACK_START_DATE": "2022-09-01",
           "TAP_SLACK_THREAD_LOOKBACK_DAYS": "1",
@@ -723,7 +733,8 @@
           "TAP_SLACK__METADATA": "{}",
           "TAP_SLACK__SCHEMA": "{}",
           "TAP_SLACK__SELECT": "[\"channels.*\", \"messages.*\", \"threads.*\"]",
-          "TAP_SLACK__SELECT_FILTER": "[]"
+          "TAP_SLACK__SELECT_FILTER": "[]",
+          "TAP_SLACK__USE_CACHED_CATALOG": "true"
         },
         "inherit_from": "tap-slack",
         "name": "tap-slack-public",
@@ -758,6 +769,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"*.*\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_GOOGLE_ANALYTICS_REPORTS": "./extract/ga_reports/cli_events_report_definition.json",
           "TAP_GOOGLE_ANALYTICS_START_DATE": "2022-02-20",
           "TAP_GOOGLE_ANALYTICS_VIEW_ID": "188392047",
@@ -765,7 +777,8 @@
           "TAP_GOOGLE_ANALYTICS__METADATA": "{}",
           "TAP_GOOGLE_ANALYTICS__SCHEMA": "{}",
           "TAP_GOOGLE_ANALYTICS__SELECT": "[\"*.*\"]",
-          "TAP_GOOGLE_ANALYTICS__SELECT_FILTER": "[]"
+          "TAP_GOOGLE_ANALYTICS__SELECT_FILTER": "[]",
+          "TAP_GOOGLE_ANALYTICS__USE_CACHED_CATALOG": "true"
         },
         "label": "Google Analytics (Universal Analytics API - Deprecated)",
         "logo_url": "https://hub.meltano.com/assets/logos/extractors/google-analytics.png",
@@ -912,6 +925,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"projects.*\", \"merge_requests.*\", \"issues.*\", \"!issues.description\", \"!issues.title\", \"!merge_requests.description\", \"!merge_requests.title\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_GITLAB_API_URL": "https://gitlab.com",
           "TAP_GITLAB_FETCH_MERGE_REQUEST_COMMITS": "false",
           "TAP_GITLAB_FETCH_PIPELINES_EXTENDED": "false",
@@ -924,7 +938,8 @@
           "TAP_GITLAB__METADATA": "{}",
           "TAP_GITLAB__SCHEMA": "{}",
           "TAP_GITLAB__SELECT": "[\"projects.*\", \"merge_requests.*\", \"issues.*\", \"!issues.description\", \"!issues.title\", \"!merge_requests.description\", \"!merge_requests.title\"]",
-          "TAP_GITLAB__SELECT_FILTER": "[]"
+          "TAP_GITLAB__SELECT_FILTER": "[]",
+          "TAP_GITLAB__USE_CACHED_CATALOG": "true"
         },
         "label": "GitLab",
         "logo_url": "https://hub.meltano.com/assets/logos/extractors/gitlab.png",
@@ -1034,12 +1049,14 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"*.*\", \"!traffic_*.*\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_GITHUB_START_DATE": "2021-05-01",
           "TAP_GITHUB__LOAD_SCHEMA": "tap_github",
           "TAP_GITHUB__METADATA": "{}",
           "TAP_GITHUB__SCHEMA": "{}",
           "TAP_GITHUB__SELECT": "[\"*.*\", \"!traffic_*.*\"]",
-          "TAP_GITHUB__SELECT_FILTER": "[]"
+          "TAP_GITHUB__SELECT_FILTER": "[]",
+          "TAP_GITHUB__USE_CACHED_CATALOG": "true"
         },
         "label": "GitHub",
         "logo_url": "https://hub.meltano.com/assets/logos/extractors/github.png",
@@ -1187,6 +1204,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"repositories.*\", \"pull_requests.*\", \"issues.*\", \"!issues.body\", \"!issues.title\", \"!pull_requests.body\", \"!pull_requests.title\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_GITHUB_MELTANO_ORGANIZATIONS": "[\"MeltanoLabs\", \"meltano\"]",
           "TAP_GITHUB_MELTANO_START_DATE": "2021-05-01",
           "TAP_GITHUB_MELTANO_STREAM_MAPS": "{\"issues.__filter__\": \"record['type'] = 'issue'\"}",
@@ -1196,6 +1214,7 @@
           "TAP_GITHUB_MELTANO__SCHEMA": "{}",
           "TAP_GITHUB_MELTANO__SELECT": "[\"repositories.*\", \"pull_requests.*\", \"issues.*\", \"!issues.body\", \"!issues.title\", \"!pull_requests.body\", \"!pull_requests.title\"]",
           "TAP_GITHUB_MELTANO__SELECT_FILTER": "[]",
+          "TAP_GITHUB_MELTANO__USE_CACHED_CATALOG": "true",
           "TAP_GITHUB_ORGANIZATIONS": "[\"MeltanoLabs\", \"meltano\"]",
           "TAP_GITHUB_START_DATE": "2021-05-01",
           "TAP_GITHUB_STREAM_MAPS": "{\"issues.__filter__\": \"record['type'] = 'issue'\"}",
@@ -1204,7 +1223,8 @@
           "TAP_GITHUB__METADATA": "{}",
           "TAP_GITHUB__SCHEMA": "{}",
           "TAP_GITHUB__SELECT": "[\"repositories.*\", \"pull_requests.*\", \"issues.*\", \"!issues.body\", \"!issues.title\", \"!pull_requests.body\", \"!pull_requests.title\"]",
-          "TAP_GITHUB__SELECT_FILTER": "[]"
+          "TAP_GITHUB__SELECT_FILTER": "[]",
+          "TAP_GITHUB__USE_CACHED_CATALOG": "true"
         },
         "inherit_from": "tap-github",
         "name": "tap-github-meltano",
@@ -1253,6 +1273,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"repositories.*\", \"readme.*\", \"issues.*\", \"pull_requests.*\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_GITHUB_METRICS_LOG_LEVEL": "DEBUG",
           "TAP_GITHUB_SEARCHES": "[{\"name\": \"tap non-forks\", \"query\": \"tap- fork:false language:Python singer in:readme\"}, {\"name\": \"target non-forks\", \"query\": \"target- fork:false language:Python singer in:readme\"}]",
           "TAP_GITHUB_SEARCH_METRICS_LOG_LEVEL": "DEBUG",
@@ -1266,6 +1287,7 @@
           "TAP_GITHUB_SEARCH__SCHEMA": "{}",
           "TAP_GITHUB_SEARCH__SELECT": "[\"repositories.*\", \"readme.*\", \"issues.*\", \"pull_requests.*\"]",
           "TAP_GITHUB_SEARCH__SELECT_FILTER": "[]",
+          "TAP_GITHUB_SEARCH__USE_CACHED_CATALOG": "true",
           "TAP_GITHUB_START_DATE": "2022-02-13",
           "TAP_GITHUB_STREAM_MAPS": "{\"repositories.__filter__\": \"('tap-' in name or 'target-' in full_name) and name != 'singer-tap-template' and name != 'singer-target-template'\\n\", \"issues.__filter__\": \"record['type'] = 'issue'\"}",
           "TAP_GITHUB_STREAM_MAPS_ISSUES___FILTER__": "record['type'] = 'issue'",
@@ -1274,7 +1296,8 @@
           "TAP_GITHUB__METADATA": "{}",
           "TAP_GITHUB__SCHEMA": "{}",
           "TAP_GITHUB__SELECT": "[\"repositories.*\", \"readme.*\", \"issues.*\", \"pull_requests.*\"]",
-          "TAP_GITHUB__SELECT_FILTER": "[]"
+          "TAP_GITHUB__SELECT_FILTER": "[]",
+          "TAP_GITHUB__USE_CACHED_CATALOG": "true"
         },
         "inherit_from": "tap-github",
         "name": "tap-github-search",
@@ -1313,6 +1336,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"*.*\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_SNOWFLAKE_ACCOUNT": "epa06486",
           "TAP_SNOWFLAKE_DBNAME": "USERDEV_PROD",
           "TAP_SNOWFLAKE_INSECURE_MODE": "False",
@@ -1323,7 +1347,8 @@
           "TAP_SNOWFLAKE__METADATA": "{}",
           "TAP_SNOWFLAKE__SCHEMA": "{}",
           "TAP_SNOWFLAKE__SELECT": "[\"*.*\"]",
-          "TAP_SNOWFLAKE__SELECT_FILTER": "[]"
+          "TAP_SNOWFLAKE__SELECT_FILTER": "[]",
+          "TAP_SNOWFLAKE__USE_CACHED_CATALOG": "true"
         },
         "label": "Snowflake",
         "logo_url": "https://hub.meltano.com/assets/logos/extractors/snowflake.png",
@@ -1426,6 +1451,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"*FACT_VARIANT_HUB_METRICS.NAME\", \"*FACT_VARIANT_HUB_METRICS.VARIANT\", \"*FACT_VARIANT_HUB_METRICS.REPO\", \"*FACT_VARIANT_HUB_METRICS.PLUGIN_TYPE\", \"*FACT_VARIANT_HUB_METRICS.PIP_URL\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS_UNSTRUCT_BY_VARIANT\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_PROJECTS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_PROJECTS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_PROJECTS_UNSTRUCT_BY_VARIANT\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS_UNSTRUCT_BY_VARIANT\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_EXECS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_EXECS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_EXECS_UNSTRUCT_BY_VARIANT\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_SNOWFLAKE_ACCOUNT": "epa06486",
           "TAP_SNOWFLAKE_DBNAME": "USERDEV_PROD",
           "TAP_SNOWFLAKE_INSECURE_MODE": "False",
@@ -1442,6 +1468,7 @@
           "TAP_SNOWFLAKE_METRICS__SCHEMA": "{}",
           "TAP_SNOWFLAKE_METRICS__SELECT": "[\"*FACT_VARIANT_HUB_METRICS.NAME\", \"*FACT_VARIANT_HUB_METRICS.VARIANT\", \"*FACT_VARIANT_HUB_METRICS.REPO\", \"*FACT_VARIANT_HUB_METRICS.PLUGIN_TYPE\", \"*FACT_VARIANT_HUB_METRICS.PIP_URL\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS_UNSTRUCT_BY_VARIANT\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_PROJECTS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_PROJECTS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_PROJECTS_UNSTRUCT_BY_VARIANT\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS_UNSTRUCT_BY_VARIANT\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_EXECS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_EXECS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_EXECS_UNSTRUCT_BY_VARIANT\"]",
           "TAP_SNOWFLAKE_METRICS__SELECT_FILTER": "[]",
+          "TAP_SNOWFLAKE_METRICS__USE_CACHED_CATALOG": "true",
           "TAP_SNOWFLAKE_ROLE": "PNADOLNY",
           "TAP_SNOWFLAKE_TABLES": "USERDEV_PROD.PNADOLNY_MELTANO_HUB.FACT_VARIANT_HUB_METRICS",
           "TAP_SNOWFLAKE_USER": "PNADOLNY",
@@ -1451,7 +1478,8 @@
           "TAP_SNOWFLAKE__METADATA___REPLICATION_METHOD": "FULL_TABLE",
           "TAP_SNOWFLAKE__SCHEMA": "{}",
           "TAP_SNOWFLAKE__SELECT": "[\"*FACT_VARIANT_HUB_METRICS.NAME\", \"*FACT_VARIANT_HUB_METRICS.VARIANT\", \"*FACT_VARIANT_HUB_METRICS.REPO\", \"*FACT_VARIANT_HUB_METRICS.PLUGIN_TYPE\", \"*FACT_VARIANT_HUB_METRICS.PIP_URL\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_PROJECTS_UNSTRUCT_BY_VARIANT\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_PROJECTS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_PROJECTS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_PROJECTS_UNSTRUCT_BY_VARIANT\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.ALL_EXECS_UNSTRUCT_BY_VARIANT\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_EXECS_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_EXECS_UNSTRUCT_BY_NAME\", \"*FACT_VARIANT_HUB_METRICS.SUCCESS_EXECS_UNSTRUCT_BY_VARIANT\"]",
-          "TAP_SNOWFLAKE__SELECT_FILTER": "[]"
+          "TAP_SNOWFLAKE__SELECT_FILTER": "[]",
+          "TAP_SNOWFLAKE__USE_CACHED_CATALOG": "true"
         },
         "inherit_from": "tap-snowflake",
         "metadata": {
@@ -1500,6 +1528,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"*HUB_METRICS_AUDIT.UPDATED_DATE\", \"*HUB_METRICS_AUDIT.METRIC_TYPE\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_SNOWFLAKE_ACCOUNT": "epa06486",
           "TAP_SNOWFLAKE_AUDIT_ACCOUNT": "epa06486",
           "TAP_SNOWFLAKE_AUDIT_DBNAME": "USERDEV_PROD",
@@ -1514,6 +1543,7 @@
           "TAP_SNOWFLAKE_AUDIT__SCHEMA": "{}",
           "TAP_SNOWFLAKE_AUDIT__SELECT": "[\"*HUB_METRICS_AUDIT.UPDATED_DATE\", \"*HUB_METRICS_AUDIT.METRIC_TYPE\"]",
           "TAP_SNOWFLAKE_AUDIT__SELECT_FILTER": "[]",
+          "TAP_SNOWFLAKE_AUDIT__USE_CACHED_CATALOG": "true",
           "TAP_SNOWFLAKE_DBNAME": "USERDEV_PROD",
           "TAP_SNOWFLAKE_INSECURE_MODE": "False",
           "TAP_SNOWFLAKE_ROLE": "PNADOLNY",
@@ -1525,7 +1555,8 @@
           "TAP_SNOWFLAKE__METADATA___REPLICATION_METHOD": "FULL_TABLE",
           "TAP_SNOWFLAKE__SCHEMA": "{}",
           "TAP_SNOWFLAKE__SELECT": "[\"*HUB_METRICS_AUDIT.UPDATED_DATE\", \"*HUB_METRICS_AUDIT.METRIC_TYPE\"]",
-          "TAP_SNOWFLAKE__SELECT_FILTER": "[]"
+          "TAP_SNOWFLAKE__SELECT_FILTER": "[]",
+          "TAP_SNOWFLAKE__USE_CACHED_CATALOG": "true"
         },
         "inherit_from": "tap-snowflake",
         "metadata": {
@@ -1557,6 +1588,7 @@
           "MELTANO_EXTRACT__SCHEMA": "{}",
           "MELTANO_EXTRACT__SELECT": "[\"*SLACK_ALERTS.TITLE\", \"*SLACK_ALERTS.BODY\"]",
           "MELTANO_EXTRACT__SELECT_FILTER": "[]",
+          "MELTANO_EXTRACT__USE_CACHED_CATALOG": "true",
           "TAP_SNOWFLAKE_ACCOUNT": "epa06486",
           "TAP_SNOWFLAKE_DBNAME": "USERDEV_PROD",
           "TAP_SNOWFLAKE_INSECURE_MODE": "False",
@@ -1574,6 +1606,7 @@
           "TAP_SNOWFLAKE_SINGER_ACTIVITY__SCHEMA": "{}",
           "TAP_SNOWFLAKE_SINGER_ACTIVITY__SELECT": "[\"*SLACK_ALERTS.TITLE\", \"*SLACK_ALERTS.BODY\"]",
           "TAP_SNOWFLAKE_SINGER_ACTIVITY__SELECT_FILTER": "[]",
+          "TAP_SNOWFLAKE_SINGER_ACTIVITY__USE_CACHED_CATALOG": "true",
           "TAP_SNOWFLAKE_TABLES": "USERDEV_PROD.PNADOLNY_SLACK_NOTIFICATIONS.SLACK_ALERTS",
           "TAP_SNOWFLAKE_USER": "PNADOLNY",
           "TAP_SNOWFLAKE_WAREHOUSE": "CORE",
@@ -1582,7 +1615,8 @@
           "TAP_SNOWFLAKE__METADATA___REPLICATION_METHOD": "FULL_TABLE",
           "TAP_SNOWFLAKE__SCHEMA": "{}",
           "TAP_SNOWFLAKE__SELECT": "[\"*SLACK_ALERTS.TITLE\", \"*SLACK_ALERTS.BODY\"]",
-          "TAP_SNOWFLAKE__SELECT_FILTER": "[]"
+          "TAP_SNOWFLAKE__SELECT_FILTER": "[]",
+          "TAP_SNOWFLAKE__USE_CACHED_CATALOG": "true"
         },
         "inherit_from": "tap-snowflake",
         "metadata": {
diff --git a/src/meltano/cli/elt.py b/src/meltano/cli/elt.py
index 06d7061af9..44031d33f3 100644
--- a/src/meltano/cli/elt.py
+++ b/src/meltano/cli/elt.py
@@ -57,6 +57,11 @@ class ELOptions:
         help="Perform a full refresh (ignore state left behind by any previous runs).",
         is_flag=True,
     )
+    refresh_catalog = click.option(
+        "--refresh-catalog",
+        help="Invalidates catalog cache and forces running discovery before this run.",
+        is_flag=True,
+    )
     select = click.option(
         "--select",
         "-s",
@@ -108,6 +113,7 @@ class ELOptions:
 @ELOptions.loader
 @ELOptions.dry
 @ELOptions.full_refresh
+@ELOptions.refresh_catalog
 @ELOptions.select
 @ELOptions.exclude
 @ELOptions.catalog
@@ -126,6 +132,7 @@ async def el(  # WPS408
     loader: str,
     dry: bool,
     full_refresh: bool,
+    refresh_catalog: bool,
     select: list[str],
     exclude: list[str],
     catalog: str,
@@ -153,6 +160,7 @@ async def el(  # WPS408
         None,
         dry,
         full_refresh,
+        refresh_catalog,
         select,
         exclude,
         catalog,
@@ -174,6 +182,7 @@ async def el(  # WPS408
 @ELOptions.transform
 @ELOptions.dry
 @ELOptions.full_refresh
+@ELOptions.refresh_catalog
 @ELOptions.select
 @ELOptions.exclude
 @ELOptions.catalog
@@ -193,6 +202,7 @@ async def elt(  # WPS408
     transform: str,
     dry: bool,
     full_refresh: bool,
+    refresh_catalog: bool,
     select: list[str],
     exclude: list[str],
     catalog: str,
@@ -221,6 +231,7 @@ async def elt(  # WPS408
         transform,
         dry,
         full_refresh,
+        refresh_catalog,
         select,
         exclude,
         catalog,
@@ -240,6 +251,7 @@ async def _run_el_command(
     transform: str | None,
     dry: bool,
     full_refresh: bool,
+    refresh_catalog: bool,
     select: list[str],
     exclude: list[str],
     catalog: str,
@@ -285,6 +297,7 @@ async def _run_el_command(
             transform,
             dry_run=dry,
             full_refresh=full_refresh,
+            refresh_catalog=refresh_catalog,
             select_filter=select_filter,
             catalog=catalog,
             state=state,
@@ -313,6 +326,7 @@ def _elt_context_builder(
     transform,
     dry_run=False,
     full_refresh=False,
+    refresh_catalog=False,
     select_filter=None,
     catalog=None,
     state=None,
@@ -333,6 +347,7 @@ def _elt_context_builder(
         .with_dry_run(dry_run)
         .with_only_transform(transform == "only")
         .with_full_refresh(full_refresh)
+        .with_refresh_catalog(refresh_catalog)
         .with_select_filter(select_filter)
         .with_catalog(catalog)
         .with_state(state)
diff --git a/src/meltano/cli/run.py b/src/meltano/cli/run.py
index 4bd3aba289..e40ba6a0ff 100644
--- a/src/meltano/cli/run.py
+++ b/src/meltano/cli/run.py
@@ -61,6 +61,11 @@ def convert(self, value, param, ctx):
     ),
     is_flag=True,
 )
+@click.option(
+    "--refresh-catalog",
+    help="Invalidates catalog cache and forces running discovery before this run.",
+    is_flag=True,
+)
 @click.option(
     "--no-state-update",
     help="Run without state saving. Applies to all pipelines.",
@@ -101,6 +106,7 @@ async def run(
     project: Project,
     dry_run: bool,
     full_refresh: bool,
+    refresh_catalog: bool,
     no_state_update: bool,
     force: bool,
     state_id_suffix: str,
@@ -143,6 +149,7 @@ async def run(
             project,
             blocks,
             full_refresh=full_refresh,
+            refresh_catalog=refresh_catalog,
             no_state_update=no_state_update,
             force=force,
             state_id_suffix=state_id_suffix,
diff --git a/src/meltano/cli/select.py b/src/meltano/cli/select.py
index 426a0035ed..7cf723a943 100644
--- a/src/meltano/cli/select.py
+++ b/src/meltano/cli/select.py
@@ -57,6 +57,11 @@ def selection_mark(selection):
     is_flag=True,
     help="Show all the tap attributes with their selected status.",
 )
+@click.option(
+    "--refresh-catalog",
+    is_flag=True,
+    help="Invalidate the catalog cache and refresh the catalog.",
+)
 @click.option(
     "--rm",
     "--remove",
@@ -85,7 +90,12 @@ async def select(
     """
     try:
         if flags["list"]:
-            await show(project, extractor, show_all=flags["all"])
+            await show(
+                project,
+                extractor,
+                show_all=flags["all"],
+                refresh=flags["refresh_catalog"],
+            )
         else:
             update(
                 project,
@@ -112,13 +122,18 @@ def update(
     select_service.update(entities_filter, attributes_filter, exclude, remove)
 
 
-async def show(project, extractor, show_all=False):
+async def show(
+    project: Project,
+    extractor: str,
+    show_all: bool = False,
+    refresh: bool = False,
+) -> None:
     """Show selected."""
     _, Session = project_engine(project)  # noqa: N806
     select_service = SelectService(project, extractor)
 
     with closing(Session()) as session:
-        list_all = await select_service.list_all(session)
+        list_all = await select_service.list_all(session, refresh)
 
     # legend
     click.secho("Legend:")
diff --git a/src/meltano/core/block/extract_load.py b/src/meltano/core/block/extract_load.py
index af552c85aa..c3803b3634 100644
--- a/src/meltano/core/block/extract_load.py
+++ b/src/meltano/core/block/extract_load.py
@@ -52,6 +52,7 @@ def __init__(
         session: Session | None = None,
         job: Job | None = None,
         full_refresh: bool | None = False,
+        refresh_catalog: bool | None = False,
         force: bool | None = False,
         update_state: bool | None = True,
         state_id_suffix: str | None = None,
@@ -66,6 +67,7 @@ def __init__(
             session: The session to use.
             job: The job within this context should run.
             full_refresh: Whether this is a full refresh.
+            refresh_catalog: whether cached catalog should be ignored.
             force: Whether to force the execution of the job if it is stale.
             update_state: Whether to update the state of the job.
             state_id_suffix: The state ID suffix to use.
@@ -77,6 +79,7 @@ def __init__(
         self.session = session
         self.job = job
         self.full_refresh = full_refresh
+        self.refresh_catalog = refresh_catalog
         self.force = force
         self.update_state = update_state
         self.state_id_suffix = state_id_suffix
@@ -120,6 +123,7 @@ def __init__(self, project: Project):
 
         self._job = None
         self._full_refresh = False
+        self._refresh_catalog = False
         self._state_update = True
         self._force = False
         self._state_id_suffix = None
@@ -167,6 +171,18 @@ def with_full_refresh(self, full_refresh: bool):
         self._full_refresh = full_refresh
         return self
 
+    def with_refresh_catalog(self, refresh_catalog: bool):
+        """Set whether cached catalog should be ignored.
+
+        Args:
+            refresh_catalog : whether cached catalog should be ignored.
+
+        Returns:
+            self
+        """
+        self._refresh_catalog = refresh_catalog
+        return self
+
     def with_no_state_update(self, no_state_update: bool):
         """Set whether this run should not update state.
 
@@ -309,6 +325,7 @@ def context(self) -> ELBContext:
             session=self.session,
             job=self._job,
             full_refresh=self._full_refresh,
+            refresh_catalog=self._refresh_catalog,
             force=self._force,
             update_state=self._state_update,
             state_id_suffix=self._state_id_suffix,
diff --git a/src/meltano/core/block/parser.py b/src/meltano/core/block/parser.py
index 716e43b1ed..5428f9ad86 100644
--- a/src/meltano/core/block/parser.py
+++ b/src/meltano/core/block/parser.py
@@ -72,6 +72,7 @@ def __init__(
         project,
         blocks: list[str],
         full_refresh: bool | None = False,
+        refresh_catalog: bool | None = False,
         no_state_update: bool | None = False,
         force: bool | None = False,
         state_id_suffix: str | None = None,
@@ -87,6 +88,7 @@ def __init__(
             blocks: List of block names to parse.
             full_refresh: Whether to perform a full refresh (applies to all
                 found sets).
+            refresh_catalog: Whether to ignore cached catalog.
             no_state_update: Whether to run with or without state updates.
             force: Whether to force a run if a job is already running (applies
                 to all found sets).
@@ -101,6 +103,7 @@ def __init__(
         self.project = project
 
         self._full_refresh = full_refresh
+        self._refresh_catalog = refresh_catalog
         self._no_state_update = no_state_update
         self._force = force
         self._state_id_suffix = state_id_suffix
@@ -246,6 +249,7 @@ def _find_next_elb_set(  # noqa: WPS231, WPS213
             ELBContextBuilder(self.project)
             .with_force(self._force)
             .with_full_refresh(self._full_refresh)
+            .with_refresh_catalog(self._refresh_catalog)
             .with_no_state_update(self._no_state_update)
             .with_state_id_suffix(self._state_id_suffix)
             .with_merge_state(self._merge_state)
diff --git a/src/meltano/core/elt_context.py b/src/meltano/core/elt_context.py
index cbdaea26ce..eece257959 100644
--- a/src/meltano/core/elt_context.py
+++ b/src/meltano/core/elt_context.py
@@ -85,7 +85,7 @@ class ELTContext:  # noqa: WPS230
 
     def __init__(
         self,
-        project,
+        project: Project,
         job: Job | None = None,
         session=None,
         extractor: PluginContext | None = None,
@@ -95,6 +95,7 @@ def __init__(
         only_transform: bool | None = False,
         dry_run: bool | None = False,
         full_refresh: bool | None = False,
+        refresh_catalog: bool | None = False,
         select_filter: list | None = None,
         catalog: str | None = None,
         state: str | None = None,
@@ -114,6 +115,7 @@ def __init__(
             only_transform: Flag. Only run transform.
             dry_run: Flag. Don't actually run.
             full_refresh: Flag. Ignore previous captured state.
+            refresh_catalog: Flag. Ignore cached catalog.
             select_filter: Select filters to apply to extractor.
             catalog: Catalog to pass to extractor.
             state: State to pass to extractor.
@@ -132,6 +134,7 @@ def __init__(
         self.only_transform = only_transform
         self.dry_run = dry_run
         self.full_refresh = full_refresh
+        self.refresh_catalog = refresh_catalog
         self.select_filter = select_filter or []
         self.catalog = catalog
         self.state = state
@@ -220,6 +223,7 @@ def __init__(self, project: Project):
         self._only_transform = False
         self._dry_run = False
         self._full_refresh = False
+        self._refresh_catalog = False
         self._select_filter = None
         self._catalog = None
         self._state = None
@@ -340,6 +344,18 @@ def with_full_refresh(self, full_refresh: bool) -> ELTContextBuilder:
         self._full_refresh = full_refresh
         return self
 
+    def with_refresh_catalog(self, refresh_catalog: bool) -> ELTContextBuilder:
+        """Ignore cached catalog.
+
+        Args:
+            refresh_catalog: Whether ignore cached catalog.
+
+        Returns:
+            Updated ELTContextBuilder instance.
+        """
+        self._refresh_catalog = refresh_catalog
+        return self
+
     def with_merge_state(self, merge_state: bool):
         """Set whether the state is to be merged or overwritten.
 
@@ -502,6 +518,7 @@ def context(self) -> ELTContext:
             only_transform=self._only_transform,
             dry_run=self._dry_run,
             full_refresh=self._full_refresh,
+            refresh_catalog=self._refresh_catalog,
             select_filter=self._select_filter,
             catalog=self._catalog,
             state=self._state,
diff --git a/src/meltano/core/plugin/singer/tap.py b/src/meltano/core/plugin/singer/tap.py
index fb0b2bdbeb..5d48c2558b 100644
--- a/src/meltano/core/plugin/singer/tap.py
+++ b/src/meltano/core/plugin/singer/tap.py
@@ -185,6 +185,11 @@ class SingerTap(SingerPlugin):  # noqa: WPS214
             value_processor="nest_object",
         ),
         SettingDefinition(name="_select_filter", kind=SettingKind.ARRAY, value=[]),
+        SettingDefinition(
+            name="_use_cached_catalog",
+            kind=SettingKind.BOOLEAN,
+            value=True,
+        ),
     ]
 
     def exec_args(self, plugin_invoker):
@@ -375,7 +380,17 @@ async def discover_catalog(  # noqa: WPS231, WPS210,
         """
         catalog_path = plugin_invoker.files["catalog"]
         catalog_cache_key_path = plugin_invoker.files["catalog_cache_key"]
-        if catalog_path.exists():
+        elt_context = plugin_invoker.context
+
+        use_catalog_cache = True
+        if (
+            elt_context
+            and elt_context.refresh_catalog
+            or not plugin_invoker.plugin_config_extras["_use_cached_catalog"]
+        ):
+            use_catalog_cache = False
+
+        if catalog_path.exists() and use_catalog_cache:
             with suppress(FileNotFoundError):
                 cached_key = catalog_cache_key_path.read_text()
                 new_cache_key = self.catalog_cache_key(plugin_invoker)
diff --git a/src/meltano/core/select_service.py b/src/meltano/core/select_service.py
index 6b430c6cd6..6a92ef5686 100644
--- a/src/meltano/core/select_service.py
+++ b/src/meltano/core/select_service.py
@@ -39,19 +39,22 @@ def current_select(self):
         plugin_settings_service = PluginSettingsService(self.project, self.extractor)
         return plugin_settings_service.get("_select")
 
-    async def load_catalog(self, session):
+    async def load_catalog(self, session, refresh=False):
         """Load the catalog."""
         invoker = invoker_factory(self.project, self.extractor)
 
+        if refresh:
+            invoker.settings_service.config_override["_use_cached_catalog"] = False
+
         async with invoker.prepared(session):
             catalog_json = await invoker.dump("catalog")
 
         return json.loads(catalog_json)
 
-    async def list_all(self, session) -> ListSelectedExecutor:
+    async def list_all(self, session, refresh=False) -> ListSelectedExecutor:
         """List all select."""
         try:
-            catalog = await self.load_catalog(session)
+            catalog = await self.load_catalog(session, refresh)
         except FileNotFoundError as err:
             raise PluginExecutionError(
                 "Could not find catalog. Verify that the tap supports discovery "  # noqa: EM101
diff --git a/src/meltano/schemas/meltano.schema.json b/src/meltano/schemas/meltano.schema.json
index e7da43799d..606e4c688a 100644
--- a/src/meltano/schemas/meltano.schema.json
+++ b/src/meltano/schemas/meltano.schema.json
@@ -589,6 +589,11 @@
               "type": "string"
             },
             "default": []
+          },
+          "use_cached_catalog": {
+            "type": "boolean",
+            "description": "A boolean that determines if the catalog cache should be used or ignored.",
+            "default": true
           }
         }
       },


Test patch:
diff --git a/tests/fixtures/core.py b/tests/fixtures/core.py
index 8d59c52b77..6268028d92 100644
--- a/tests/fixtures/core.py
+++ b/tests/fixtures/core.py
@@ -1067,7 +1067,12 @@ def discovery():  # noqa: WPS213
                                 "kind": "object",
                                 "value": {"nested": "from_default"},
                             },
-                            {"name": "hidden", "kind": "hidden", "value": 42},
+                            {
+                                "name": "hidden",
+                                "kind": "integer",
+                                "value": 42,
+                                "hidden": True,
+                            },
                             {"name": "boolean", "kind": "boolean"},
                             {"name": "auth.username"},
                             {"name": "auth.password", "sensitive": True},
diff --git a/tests/meltano/cli/test_select.py b/tests/meltano/cli/test_select.py
index 92050ffce5..cc72b6f110 100644
--- a/tests/meltano/cli/test_select.py
+++ b/tests/meltano/cli/test_select.py
@@ -6,6 +6,12 @@
 
 from asserts import assert_cli_runner
 from meltano.cli import cli
+from meltano.core.plugin.singer.catalog import (
+    ListSelectedExecutor,
+    SelectedNode,
+    SelectionType,
+)
+from meltano.core.select_service import SelectService
 
 
 class TestCliSelect:
@@ -33,3 +39,40 @@ def test_update_select_pattern(self, cli_runner, tap):
         assert_cli_runner(result)
         json_config = json.loads(result.stdout)
         assert "mock.*" not in json_config["_select"]
+
+    @pytest.mark.usefixtures("project")
+    def test_select_list(self, cli_runner, tap, monkeypatch: pytest.MonkeyPatch):
+        async def mock_list_all(*args, **kwargs):  # noqa: ARG001
+            result = ListSelectedExecutor()
+            result.streams = {
+                SelectedNode(key="users", selection=SelectionType.SELECTED)
+            }
+            result.properties = {
+                "users": {
+                    SelectedNode(key="id", selection=SelectionType.SELECTED),
+                    SelectedNode(key="name", selection=SelectionType.EXCLUDED),
+                }
+            }
+            return result
+
+        monkeypatch.setattr(
+            SelectService,
+            "list_all",
+            mock_list_all,
+        )
+
+        # list selection
+        result = cli_runner.invoke(
+            cli,
+            [
+                "--no-environment",
+                "select",
+                tap.name,
+                "--list",
+                "--all",
+            ],
+        )
+        assert_cli_runner(result)
+
+        assert "[selected ] users.id" in result.stdout
+        assert "[excluded ] users.name" in result.stdout
diff --git a/tests/meltano/core/plugin/singer/test_tap.py b/tests/meltano/core/plugin/singer/test_tap.py
index 8d2ee4aacd..e1461f6ed4 100644
--- a/tests/meltano/core/plugin/singer/test_tap.py
+++ b/tests/meltano/core/plugin/singer/test_tap.py
@@ -216,6 +216,7 @@ async def test_discover_catalog(  # noqa: WPS213
         session,
         plugin_invoker_factory,
         subject,
+        monkeypatch,
     ):
         invoker = plugin_invoker_factory(subject)
 
@@ -267,6 +268,33 @@ def mock_discovery(*args, **kwargs):  # noqa: ARG001
                 assert json.loads(catalog_path.read_text()) == {"discovered": True}
                 assert not catalog_cache_key_path.exists()
 
+                # Apply catalog rules to store the cache key again
+                subject.apply_catalog_rules(invoker)
+                assert catalog_cache_key_path.exists()
+
+        monkeypatch.setitem(
+            invoker.settings_service.config_override,
+            "_use_cached_catalog",
+            False,
+        )
+
+        async with invoker.prepared(session):
+            with mock.patch.object(
+                SingerTap,
+                "run_discovery",
+                side_effect=mock_discovery,
+            ) as mocked_run_discovery:
+                assert catalog_cache_key_path.exists()
+
+                # with _use_cached_catalog = false, discovery should be invoked
+                # again even with a stored cache key.
+                mocked_run_discovery.reset_mock()
+                await subject.discover_catalog(invoker)
+
+                mocked_run_discovery.assert_called_once()
+                assert json.loads(catalog_path.read_text()) == {"discovered": True}
+                assert not catalog_cache_key_path.exists()
+
     @pytest.mark.asyncio()
     async def test_discover_catalog_custom(
         self,
diff --git a/tests/meltano/core/test_select_service.py b/tests/meltano/core/test_select_service.py
new file mode 100644
index 0000000000..3462b0bfb3
--- /dev/null
+++ b/tests/meltano/core/test_select_service.py
@@ -0,0 +1,105 @@
+from __future__ import annotations
+
+import json
+import typing as t
+from collections import OrderedDict
+
+import pytest
+
+from meltano.core.plugin.singer.catalog import SelectedNode, SelectionType
+from meltano.core.plugin.singer.tap import SingerTap
+from meltano.core.select_service import SelectService
+
+if t.TYPE_CHECKING:
+    from sqlalchemy.orm.session import Session
+
+    from meltano.core.project import Project
+
+
+@pytest.mark.asyncio()
+@pytest.mark.usefixtures("tap")
+async def test_select_service_list_all(
+    project: Project,
+    session: Session,
+    monkeypatch: pytest.MonkeyPatch,
+):
+    catalog = {
+        "streams": [
+            {
+                "stream": "users",
+                "tap_stream_id": "users",
+                "metadata": [
+                    {"breadcrumb": [], "metadata": {"selected": True}},
+                ],
+                "schema": {
+                    "properties": {
+                        "id": {"type": "integer"},
+                    }
+                },
+            }
+        ]
+    }
+    extractor = "tap-mock"
+    service = SelectService(project, extractor)
+
+    async def mock_run_discovery(tap, plugin_invoker, catalog_path):  # noqa: ARG001
+        with catalog_path.open("w") as catalog_file:
+            json.dump(catalog, catalog_file)
+
+    # Mock tap's run_discovery method
+    monkeypatch.setattr(
+        SingerTap,
+        "run_discovery",
+        mock_run_discovery,
+    )
+
+    list_all = await service.list_all(session, refresh=False)
+    assert list_all.streams == {
+        SelectedNode(
+            key="users",
+            selection=SelectionType.SELECTED,
+        )
+    }
+    assert list_all.properties == OrderedDict(
+        {
+            "users": {
+                SelectedNode(
+                    key="id",
+                    selection=SelectionType.AUTOMATIC,
+                ),
+            }
+        }
+    )
+
+    # Update the catalog to include a new property
+    catalog["streams"][0]["schema"]["properties"]["name"] = {"type": "string"}  # noqa: WPS219
+
+    # Without refreshing the catalog, the new property should not be included
+    list_all = await service.list_all(session, refresh=False)
+    assert list_all.properties == OrderedDict(
+        {
+            "users": {
+                SelectedNode(
+                    key="id",
+                    selection=SelectionType.AUTOMATIC,
+                ),
+            }
+        }
+    )
+
+    # Refreshing the catalog should include the new property
+    list_all = await service.list_all(session, refresh=True)
+    assert list_all.properties == OrderedDict(
+        {
+            "users": {
+                SelectedNode(
+                    key="id",
+                    selection=SelectionType.AUTOMATIC,
+                ),
+                SelectedNode(
+                    key="name",
+                    selection=SelectionType.AUTOMATIC,
+                ),
+            }
+        }
+    )