The workaround is to send the campaign name yourself as a UTM parameter, next to the gclid. GA4 stores it in a separate dimension, Session manual campaign name.
By hand that's a lot of work, and it breaks every time someone renames a campaign. Google Ads has no ValueTrack parameter for the campaign name, so a tracking template alone won't do it. Jan Zdarsa's Google Ads script automates the same UTM method: it writes each campaign name into a custom parameter, sets a tracking template with UTMs, and runs every hour. It covers Search, Display, Shopping and Performance Max. Demand Gen and Video you still tag by hand. Keep auto-tagging on.
UTMs don't fix every session: some still show up as (organic) or (not set). Check the report every few months to see whether Google has fixed it on its side.
Installation steps for the script are on newmetrics.io. A related but different problem is (not set) as the landing page, see where those (not set) landing pages come from.