Fire's arg parser truncates strings with hashes (#) in them. Simple test:
test.py:
import fire
def test(a): print(a, type(a))
fire.Fire(test)
> python test.py hi#there
hi <class 'str'>
> python test.py "hi#there"
hi <class 'str'>
If this is by design, it doesn't appear to be documented anywhere.