Agents swarming will 5x your usage, or worse.
The communication overhead of summarizing and status reporting between workers will eat up tokens faster than doing the work will.
Large monolith code bases with multiple layers of abstraction (Typescript to JSON schema, prisma, etc) will eat up more context than the actual work, by far. IMHO this same rule applies for human engineers as well, one of the reasons why I generally oppose too many layers of abstractions/middleware.
On large complex highly abstracted code bases, up to 90% of token usage will be input tokens.
Generally cached, generally cheaper, but not free.
The more you can constrain a problem (talking to black boxes with well defined contracts) the less the agent has to work.
So, you know, good software engineering principles in general.