Almost all of your 'responses' are meaningless. Denounce the AI for spying? They don't care. They took tribute from your CS? They'll still do it. I am real tired of the "You'll pay for this" vs "I'm sorry this caused a divide" fakery of a 'choice'.
There is no 'casus belli' (loosely means just war). Doesn't matter if you're responding to a threat, protecting a CS, honoring a pact, if you declare war, you're gaining 'warmonger' amongst the civs of the world
It occurs to me that these have the same solution. If you answer "I'm sorry this caused a divide" a counter starts, and if you break that "promise" before time's up you suffer a diplo hit. How about, if you answer "You'll pay for this", a similar counter starts, and if you declare war within the time limit, you don't suffer the warmonger penalty?
There is no sense of permanence. AI's flipflop wildly because their current attitude towards you is always just a sum of various numbers.
It's an AI - how else would you have it determine relationships? It is a lot more consistent in G&K, and at least now "Friendly", "Neutral" and "Hostile" do tend to be reliable descriptors of an AI's attitude towards you, unless a backstab is planned.
You can never build a lasting friendship or true ally, every AI will potentially backstab you, either out of aggression or desperation.
My alliance with Babylon in my current game has gone on since shortly after first contact in the 1000s BC until 1886 AD so far, with no sign that it's going to fade. Nebby's been a moderately useful ally when enemy forces are around him (and two of his cities protect the flanks of Pi-Rameses, so he's taken on his fair share of Ottoman rifles), though despite his tendency to declare war left and centre he's not very interested in taking the fight to the Ottomans - they're my enemy more than his, and his key rivals aren't in a position to threaten his interests (since, with his and Singapore's help, I captured Pi-Rameses, all Egyptian territory is across the sea).
I contacted Austria much later, but they've also proved reliable allies, though despite their high technology and insistence on having me start wars with them, their contribution generally amounts to one Infantry at a time that seems there mostly to show willing. They did give me a heads-up that allowed me to prevent a coming war with Arabia, though, so having them onside has its uses.
I miss vassalage, capitulation, and mutual victory.
A form of mutual victory would probably help the AI to act more cooperatively, certainly.
Do you think it would be a good idea to allow your units to fight units hostile to an allied city state within its borders?
You can just gift the CS units with the same intent, surely? In my current game Egypt launched an attack on Singapore, including the use of ranged ships (Singapore had no fleet). I sent them a caravel and a musketeer, which the CS used effectively to eliminate the attacking Galleases and move on Pi-Ramesses (replacing Babylonian musketeers who had perished in their attempt, making enough of a hole that I could move in and grab the city) - Singapore managed to fend off the land attack by itself.