According to the manual, using empty brackets as the provider in a tag path will generally result in an invalid path in a Gateway script. However, the below line works for me in a Gateway Timer script and uses my project's default tag provider.
system.tag.writeAsync(["[]TestTag"], [False])
I'm curious as to why this works? If using empty brackets isn't a good idea, then what is the best way to construct Gateway scripts to utilize a project's default tag provider (i.e. for reusability across other projects)?