langchain · difficulty ◆◆
Coerce Empty Strings to None
Empty means off, not broken.
Docker placeholders no longer take down your tracing.
$ load_gateway_env_vars()What it does
When LangChain’s gateway reads environment variables like LANGSMITH_API_KEY or LANGCHAIN_TRACING_V2, it previously crashed or misbehaved if those were set to an empty string rather than unset or holding a real value. This patch adds a guard that treats an empty-string env var as if it were not set, skipping it silently instead of raising or passing an invalid empty value downstream.
Why it matters
In production deployments it is common for variables to be set to "" as a placeholder before real secrets are injected. Before this fix that pattern made the gateway throw a runtime error or silently route requests without tracing, which is very hard to debug. Now the gateway stays stable however empty the environment is.
Example
$ import os
os.environ["LANGSMITH_API_KEY"] = ""
os.environ["LANGCHAIN_TRACING_V2"] = ""
env_vars = load_gateway_env_vars()
print("LANGSMITH_API_KEY:", repr(env_vars.get("LANGSMITH_API_KEY")))
print("LANGCHAIN_TRACING_V2:", repr(env_vars.get("LANGCHAIN_TRACING_V2")))LANGSMITH_API_KEY: None
LANGCHAIN_TRACING_V2: None
Gateway initialized successfully — no crash!An empty-string env var is coerced to None, meaning not configured.
Common flags
- load_gateway_env_vars()
- Loads and validates gateway env vars, now skipping empty strings
- LANGSMITH_API_KEY
- LangSmith API key, falling back to LANGCHAIN_API_KEY
- LANGCHAIN_TRACING_V2
- Enables LangSmith v2 tracing ("true"/"false")
History
PR #39107
The empty-string guard shipped in langchain-core 1.5.2 (2026-07-28). The same day a sparse langchain-core 1.5.3 meta-release landed, but 1.5.2 carried the substantive gateway fix.
Fun facts
Pros & cons
pros
- + Stable under empty config
- + Easier debugging
- + Zero migration
cons
- − Needs 1.5.2+
- − Behavior only
Takeaways
- 1Empty env vars coerce to None.
- 2Upgrade to langchain-core 1.5.2.
- 3Use ConfigurableGateway.from_env() to verify.