I feel like the default promise should just be something like "I mean you no harm, but I ain't moving." As long as no war is declared, I don't see how it's detrimental, as opposed to all the other promises (spying, forward settling, religious conversion) which have an immediate impact on their own. Plus keeping the promise is too finicky, since borders change and troops move around all the time. In order to still penalize breaking the promise, a diplomatic penalty should be applied to all civs for breaking it (as it should for all promises).
Also agree that a visible timer would be much appreciated, especially for this one. Never know when the promise is up, so I end up being super careful not to have a single unit nearby for like 5-10 turns.