I have seen the gravitating behavior before and I think this is simply a reward function that isn’t written well. You should keep track of the closest distance to the goal and only reward when progress is being made, i.e. the agent got closer than the best previous closeness. If your reward is simply based on proximity, then I believe you will get what you are seeing. If what I described is not the case, then I would need more details on your reward function to offer any advice.
If you want to pause the behavior, you could probably call RemoveAgent and then later call AddAgent again? I think that’s the best bet but it might not work well in your project for reasons that I can’t anticipate.
Let me know if that helps!