#30825 [Bug]: Multiple logging callbacks in key metadata - only last callback's credentials are used
### Check for existing issues
- [x] I have searched the existing issues and checked that my issue is not a duplicate.
### What happened?
When configuring two logging callbacks in a key's metadata (via the UI or API), e.g. `langfuse` + `langfuse_otel` or two `langfuse` entries each pointing to different Langfuse projects - **only the last callback's credentials are applied to all callbacks**. The first callback silently receives the second callback's credentials and fails or logs to the wrong project.
Expected: each callback fires independently with its own credentials.
## Root cause (code pointer)
In `litellm/proxy/litellm_pre_call_utils.py`, `convert_key_logging_metadata_to_callback` merges all callbacks into a single `TeamCallbackMetadata` with **one flat `callback_vars` dict**. Iterating over multiple logging entries causes later entries to overwrite earlier ones (lines ~187–191):
```python for var, value in data.callback_vars.items(): if team_callback_settings_obj.callback_vars is None: team_callback_settings_obj.callback_vars = {} team_callback_settings_obj.callback_vars[var] = str(...) # ← overwrites previous callback's vars ```
Since `langfuse` and `…