# langsmith_key_shadowed_by_empty_override

> **Function** in `deepagents_code`

📖 [View in docs](https://reference.langchain.com/python/deepagents-code/config/langsmith_key_shadowed_by_empty_override)

Report an empty prefixed override that is suppressing a LangSmith key.

`/trace` shows a generic "not configured" hint whenever no key resolves, but
a common footgun is exporting `DEEPAGENTS_CODE_LANGSMITH_API_KEY=` (empty).
A present-but-empty prefixed variable suppresses a key two ways: per
`resolve_env_var`'s precedence it shadows the canonical env variable
directly, and -- because `apply_stored_service_credentials` skips the `/auth`
bridge onto `LANGSMITH_API_KEY` whenever the prefixed var is present -- it
also keeps a `/auth`-stored key from ever reaching the environment. Either
way tracing silently stays off even though a key is available. Detecting this
lets callers name the offending variable instead of sending the user to
`/auth`.

Only an override that actually gates the *effective* key is reported. If a
key already resolves under the normal `LANGSMITH_API_KEY`-before-
`LANGCHAIN_API_KEY` precedence, tracing is off for some other reason (a
missing tracing flag), no override is to blame, and nothing is reported.
Otherwise each override is checked against the specific key it suppresses, so
the returned name is one that, once unset, actually lets a key resolve: its
canonical variant carries a value, or -- for `LANGSMITH_API_KEY`, the var
`/auth` bridges its stored key onto -- a stored key exists. When several
overrides qualify, the first in `_TRACING_API_KEY_ENV_VARS` order is
returned.

## Signature

```python
langsmith_key_shadowed_by_empty_override() -> LangsmithShadowResult
```

## Returns

`LangsmithShadowResult`

A `LangsmithShadowResult`; see its fields for the three outcomes.

---

[View source on GitHub](https://github.com/langchain-ai/deepagents/blob/4bfa52000ef65ac623d8ada0cb67f67cbdd663ea/libs/code/deepagents_code/config.py#L4419)