Okay, looks like I wasn't very clear in my first post.
Here's a simplified version of what I'm aiming for:
I have a custom item, a magic wand. The player hits a block with the wand and depending on what type of block it is (e.g. minecraft:dirt), it disappears. Or it doesn't disappear (e.g. minecraft:obisidian).
I want the player, using a config file (e.g. %appdata%\.minecraft\config\magicwands.cfg or magicwands-client.toml in the newer versions), to be able to specify a list of which blocks disappear, e.g.:
disappearingblocks = minecraft:dirt,minecraft:sand,minecraft:gravel,minecraft:logs
When Minecraft loads, my mod reads that list from the config file, builds a custom tag that contains those blocks/tags. Then, when the player hits a block with the wand item, the program compares the blockstate with the "disappearingblocks" tag, and then either changes the block to air or does nothing.
If the player, say, doesn't want the wand to affect gravel, I want them to be able to edit that config file and remove it from the list.
The old version of the mod, before tags existed, just used strings to compare the block's unlocalized name to the list of block names read as a string from the config file.
The wand item cannot be coded using data packs, it's way too complex (it actually does a lot more than the simplified description above).
The question is, can I create the "disappearingblocks" tag and add blocks/tags to it during the Minecraft "setup" or "doClientSetup" phase? Once it's past the setup phase, it doesn't need to change.