I'm using etags and found that:
Step 0. Set the 'tags-file-name' as buffer local to a specified TAGS file, and the global value is nil.
Step 1. Press M-. to find tags.
Step 2. Input some characters in the mini-buffer and press the TAB key for completion, then the mini-buffer will display "Making tags completion table for ...done".
After that, the global value of 'tags-file-name' is set to the same as its local value.
How can I keep the global value nil ?
This is related to a family of bugs that have been fixed in the current development tree, and available in Emacs 26 when it comes out.
Here's the closing message: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=23164;msg=31