Repository navigation
fix(deps): update dependency langsmith to v0.6.0 [security] - #4058
renovate[bot] wants to merge 1 commit into
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Finished running flow.
|
||||||||||||
Check changeset necessityStatus: NOT REQUIRED Reason:
Changeset (copy & paste):<!-- No changeset required for this PR --> |
🤖 Agent Deep Modeling ExecutionStarted at: 2026-08-26 23:10:40 UTC View DetailsCommand Output
RUN v3.2.6 /home/runner/work/liam/liam/frontend/internal-packages/agent (node:7673) ExperimentalWarning: WASI is an experimental feature and might change at any time ✅ [INFO] 2026-08-26T23:10:42.480Z Context: trace=211a2580-6567-43ce-b8c6-bfae81a936b2,id=211a2580-6567-43ce-b8c6-bfae81a936b2; trace=211a2580-6567-43ce-b8c6-bfae81a936b2,id=c76fa8c8-c7a4-479a-b696-44dc118013cf; trace=211a2580-6567-43ce-b8c6-bfae81a936b2,id=1dceb653-67d1-49a3-9e1c-da5fe77fe2ae; trace=211a2580-6567-43ce-b8c6-bfae81a936b2,id=a7830bd6-dff7-44b4-b32a-a431c1ccb5c7; trace=211a2580-6567-43ce-b8c6-bfae81a936b2,id=6ffb823c-833a-44b4-863c-26a26651519a; trace=211a2580-6567-43ce-b8c6-bfae81a936b2,id=47f57a56-c8aa-43bf-980c-a91031c366a4; trace=211a2580-6567-43ce-b8c6-bfae81a936b2,id=ccc30744-d432-4701-8e50-197d4febc3a8; trace=211a2580-6567-43ce-b8c6-bfae81a936b2,id=5d5360aa-2332-443a-b311-c971922ffe59; trace=211a2580-6567-43ce-b8c6-bfae81a936b2,id=f847f3d4-2b47-4f4c-80ae-b704387bdb58; trace=211a2580-6567-43ce-b8c6-bfae81a936b2,id=dd275422-07b1-4fb7-acbc-6c506ba5e292; trace=211a2580-6567-43ce-b8c6-bfae81a936b2,id=1251650f-93a1-47da-89bb-e76f6a1cb263; trace=211a2580-6567-43ce-b8c6-bfae81a936b2,id=570b7bcf-e6d9-4010-a537-ade85c1ad2cf; trace=211a2580-6567-43ce-b8c6-bfae81a936b2,id=c6ee5e79-ddfc-4273-871c-c8a0e5419adf; trace=211a2580-6567-43ce-b8c6-bfae81a936b2,id=cd8b8e4c-1793-42cf-a943-07fc48b46221; trace=211a2580-6567-43ce-b8c6-bfae81a936b2,id=c5061170-e950-4d8a-b0fc-c06294002ae7; trace=211a2580-6567-43ce-b8c6-bfae81a936b2,id=5c8e286c-01bc-47be-855c-fbee6616a01a; trace=211a2580-6567-43ce-b8c6-bfae81a936b2,id=ca790efa-a921-4e99-9f2e-9afeccf75b3c; trace=211a2580-6567-43ce-b8c6-bfae81a936b2,id=31ba60ed-767c-460d-ad0a-4480497fb71d; trace=211a2580-6567-43ce-b8c6-bfae81a936b2,id=b9ac5e01-ad72-445a-991c-c468fad3cd43; trace=211a2580-6567-43ce-b8c6-bfae81a936b2,id=8dc70435-55c2-4714-b6e9-d8ca28615408 stderr | src/createGraph.integration.test.ts > createGraph Integration > should execute complete workflow Context: trace=211a2580-6567-43ce-b8c6-bfae81a936b2,id=8dc70435-55c2-4714-b6e9-d8ca28615408; trace=211a2580-6567-43ce-b8c6-bfae81a936b2,id=b9ac5e01-ad72-445a-991c-c468fad3cd43; trace=211a2580-6567-43ce-b8c6-bfae81a936b2,id=c5061170-e950-4d8a-b0fc-c06294002ae7; trace=211a2580-6567-43ce-b8c6-bfae81a936b2,id=cd8b8e4c-1793-42cf-a943-07fc48b46221; trace=211a2580-6567-43ce-b8c6-bfae81a936b2,id=211a2580-6567-43ce-b8c6-bfae81a936b2 x ⎯⎯⎯⎯⎯⎯⎯ Failed Tests 1 ⎯⎯⎯⎯⎯⎯⎯ FAIL src/createGraph.integration.test.ts > createGraph Integration > should execute complete workflow Troubleshooting URL: https://js.langchain.com/docs/troubleshooting/errors/MODEL_AUTHENTICATION/ ❯ RunnableCallable.analyzeRequirementsNode [as func] src/pm-agent/nodes/analyzeRequirementsNode.ts:38:11 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯ Test Files 1 failed (1) ELIFECYCLE Command failed with exit code 1. |
80175f6 to
2557f77
Compare
2557f77 to
eb90a13
Compare
eb90a13 to
2a1207e
Compare
c158000 to
7d7d975
Compare
7d7d975 to
5fbfc20
Compare
5fbfc20 to
98feff4
Compare
98feff4 to
f41ec55
Compare
|
Important Review skippedBot user detected. To trigger a single review, invoke the ⚙️ Run configuration
You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Closing: this dependency is no longer used in the repository after the Liam DB packages were removed (#4153). |
This PR contains the following updates:
0.3.73→0.6.0LangSmith Client SDK Affected by Server-Side Request Forgery via Tracing Header Injection
CVE-2026-25528 / GHSA-v34v-rq6j-cj6p
More information
Details
Summary
The LangSmith SDK's distributed tracing feature is vulnerable to Server-Side Request Forgery via malicious HTTP headers. An attacker can inject arbitrary
api_urlvalues through thebaggageheader, causing the SDK to exfiltrate sensitive trace data to attacker-controlled endpoints.Description
When using distributed tracing, the SDK parses incoming HTTP headers via
RunTree.from_headers()in Python orRunTree.fromHeaders()in Typescript. Thebaggageheader can contain replica configurations includingapi_urlandapi_keyfields.Prior to the fix, these attacker-controlled values were accepted without validation. When a traced operation completes, the SDK's
post()andpatch()methods send run data to all configured replica URLs, including any injected by an attacker.Attack Vector
Attacker sends an HTTP request to a vulnerable service with a malicious
baggageheader:The service parses the header via
RunTree.from_headers(), storing the attacker's URLWhen the traced operation completes, the SDK sends the full run data (including LLM inputs, outputs, and metadata) to
https://attacker.com/exfilImpact
Affected Use Cases
Applications are vulnerable if they:
TracingMiddlewareto automatically propagate tracing contextRunTree.from_headers()/RunTree.fromHeaders()with untrusted HTTP headersRemediation
Update to the patched versions:
pip install langsmith>=0.6.3npm install langsmith@>=0.4.6The fix filters incoming replica configurations to an allowlist of safe fields, removing
api_url,api_key, and other credential fields.Workarounds
If unable to upgrade immediately:
baggageheader before passing tofrom_headers()TracingMiddlewarewith untrusted trafficSeverity
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:N/A:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
LangSmith Client SDKs has Prototype Pollution in langsmith-sdk via Incomplete
__proto__Guard in Internal lodashset()CVE-2026-40190 / GHSA-fw9q-39r9-c252
More information
Details
GHSA-fw9q-39r9-c252: Prototype Pollution via Incomplete Lodash
set()Guard inlangsmith-sdkSeverity: Medium (CVSS ~5.6)
Status: Fixed in 0.5.18
Summary
The LangSmith JavaScript/TypeScript SDK (
langsmith) contains an incomplete prototype pollution fix in its internally vendored lodashset()utility. ThebaseAssignValue()function only guards against the__proto__key, but fails to prevent traversal viaconstructor.prototype. This allows an attacker who controls keys in data processed by thecreateAnonymizer()API to polluteObject.prototype, affecting all objects in the Node.js process.Affected Products
langsmith(npm)js/src/utils/lodash/baseAssignValue.ts,js/src/anonymizer/index.tsNot affected: The Python SDK (
langsmithon PyPI) does not use lodash or an equivalent pattern.Root Cause
The SDK vendors an internal copy of lodash's
set()function atjs/src/utils/lodash/. ThebaseAssignValue()function atbaseAssignValue.ts:11implements a guard for prototype pollution:This blocks
__proto__pollution but does not block theconstructor.prototypetraversal path. Whenset()is called with a path like"constructor.prototype.polluted":castPath()splits it into["constructor", "prototype", "polluted"]baseSet()iterates:obj.constructor→Object→Object.prototypeassignValue(Object.prototype, "polluted", value)callsbaseAssignValue()"polluted"(not"__proto__"), so the guard is bypassedObject.prototype.polluted = value— all objects are pollutedAttack Vector via Anonymizer
The
createAnonymizer()API (importable aslangsmith/anonymizer) processes data by:extractStringNodes()walks an object recursively and builds dotted paths from keysanonymizer/index.ts:95)set()—set(mutateValue, node.path, node.value)writes the replaced value back (anonymizer/index.ts:123)An attacker who controls keys in data being anonymized can construct a nested object where the path resolves to
constructor.prototype.X:extractStringNodes()produces path"wrapper.constructor.prototype.isAdmin". When the replacement triggers andset()writes back, it traverses up toObject.prototype.Although
createAnonymizer()usesdeepClone()atanonymizer/index.ts:62(JSON.parse(JSON.stringify(data))), the prototype chain traversal escapes the clone boundary becauseclone.wrapper.constructorresolves to the globalObjectconstructor, not a cloned copy.Proof of Concept
Impact
Prototype pollution in a Node.js process can enable:
if (user.isAdmin)checks succeed on all objectseval()/Function()sinkstoString,valueOf, orhasOwnPropertyon all objectsRemediation
In
baseAssignValue.ts, extend the guard to coverconstructorandprototypekeys:As defense in depth,
extractStringNodes()inanonymizer/index.tsshould also sanitize or reject path segments matchingconstructororprototypebefore passing them toset().Timeline
Credits
Reported by: OneThing4101
Severity
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:LReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
LangSmith SDK: Streaming token events bypass output redaction
CVE-2026-41182 / GHSA-rr7j-v2q5-chgv
More information
Details
Summary
The LangSmith SDK's output redaction controls (hideOutputs in JS, hide_outputs in Python) do not apply to streaming token events. When an LLM run produces streaming output, each chunk is recorded as a new_token event containing the raw token value. These events bypass the redaction pipeline entirely — prepareRunCreateOrUpdateInputs (JS) and _hide_run_outputs (Python) only process the inputs and outputs fields on a run, never the events array. As a result, applications relying on output redaction to prevent sensitive LLM output from being stored in LangSmith will still leak the full streamed content via run events.
Details
Both JS and Python SDKs are affected. The same pattern exists in both:
traceable.ts:997-1003andtraceable.ts:1044-1050run_helpers.py:1924andrun_helpers.py:1996In both SDKs,
new_tokenevents with rawkwargs.tokenvalues are added during streaming, and the redaction pipeline (hideOutputsin JS,hide_outputsin Python) only processesinputs/outputs— neverevents.Severity
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
LangSmith SDK: Public prompt pull deserializes untrusted manifests without trust boundary warning
CVE-2026-45134 / GHSA-3644-q5cj-c5c7
More information
Details
Description
The LangSmith SDK's prompt pull methods (
pull_prompt/pull_prompt_commitin Python,pullPrompt/pullPromptCommitin JS/TS) fetch and deserialize prompt manifests from the LangSmith Hub. These manifests may contain serialized LangChain objects and model configuration that affect runtime behavior. When pulling a public prompt byowner/nameidentifier, the manifest content is controlled by an external party, but prior versions of the SDK did not distinguish this from pulling a prompt within the caller's own organization.Prompt manifests can intentionally configure a model with a custom base URL, default headers, model name, or other constructor arguments. These are supported features, but they also mean the prompt contents should be treated as executable configuration rather than plain text. A prompt can also include serialized LangChain
RunnableorPromptTemplateobjects with attacker-controlled constructor kwargs, or secret references that, ifsecrets_from_envis enabled, read environment variables at deserialization time.Applications are exposed when all of the following are true:
pull_promptorpull_prompt_commit(Python) orpullPromptorpullPromptCommit(JS/TS) with a publicowner/nameprompt identifier.Applications that only pull prompts from their own organization (referenced by name only, without an
owner/prefix) are not affected by the public prompt trust boundary issue described above. However, same-organization prompts carry their own risk. If an attacker gains write access to the organization (for example, through a leakedLANGSMITH_API_KEYor a compromised team member account), they can push a malicious prompt that is pulled and deserialized without any additional warning.Impact
An attacker who publishes a malicious prompt to LangSmith Hub may be able to affect applications that pull that prompt by
owner/name. If the prompt manifest reaches the SDK's deserialization path, the SDK will instantiate the referenced LangChain objects with the attacker-supplied constructor arguments rather than treating the manifest as inert data.Realistic impacts include:
base_url, proxy, or equivalent endpoint-setting parameter. In typical deployments, redirected requests may include prompt contents, system prompts, retrieved context, model parameters, provider credentials, or other secrets and may disclose them to the attacker-controlled endpoint.include_model=Trueis passed, because this expands the allowlist to partner integration classes. This is not the default, but it materially increases risk when pulling prompts from outside the caller's organization.Remediation
The LangSmith SDK now blocks pulling public prompts by
owner/nameby default. Callers must explicitly opt in by passingdangerously_pull_public_prompt=True(Python) ordangerouslyPullPublicPrompt: true(JS/TS) to acknowledge the trust boundary. This flag should only be set after reviewing and trusting the prompt contents, not merely the publishing account.Upgrade to LangSmith SDK Python >= 0.8.0 or JS/TS >= 0.6.0.
Guidance for prompt pull methods
The prompt pull methods (
pull_prompt/pull_prompt_commitin Python,pullPrompt/pullPromptCommitin JS/TS) should be used only with trusted prompts. Do not pull public prompts byowner/namefrom untrusted or unreviewed sources without understanding that the manifest contents will be deserialized and may affect runtime behavior.When pulling prompts that include model configuration (
include_model=Truein Python,includeModel: truein JS/TS), the deserialization allowlist expands to include partner integration classes. Because this mode is not the default and is often unnecessary for third-party prompts, prefer the default (false) when pulling prompts from sources outside your organization.Avoid passing
secrets_from_env=True(Python) when pulling untrusted prompts. This parameter allows prompt manifests to read environment variables during deserialization. Only use it with trusted prompts from your own organization.Same-organization prompts
Prompts pulled from the caller's own organization (referenced by name only, without an
owner/prefix) are not gated by the newdangerously_pull_public_promptflag, but they are not inherently safe. If an attacker gains write access to the organization (for example, through a leakedLANGSMITH_API_KEYor a compromised team member account), they can push a malicious prompt that redirects LLM traffic to attacker-controlled infrastructure and may disclose any credentials attached to those requests.The security of same-organization prompts follows a shared responsibility model. The LangSmith SDK enforces trust boundaries for public prompts pulled from external accounts, but it cannot protect against compromised credentials or accounts within the caller's own organization. Securing API keys, managing team member access, and reviewing prompt contents before production deployment are the responsibility of the organization. Organizations should treat prompts as executable configuration and apply the same review and audit practices they would apply to application code.
Credits
First reported by @Moaaz-0x.
Severity
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:L/A:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
Release Notes
langchain-ai/langsmith-javascript (langsmith)
v0.6.0Compare Source
v0.5.26Compare Source
v0.5.25Compare Source
v0.5.24Compare Source
v0.5.23Compare Source
v0.5.22Compare Source
v0.5.21Compare Source
v0.5.20Compare Source
v0.5.19Compare Source
v0.5.18Compare Source
v0.5.17Compare Source
v0.5.16Compare Source
v0.5.15Compare Source
v0.5.14Compare Source
v0.5.13Compare Source
v0.5.12Compare Source
v0.5.11Compare Source
v0.5.10Compare Source
v0.5.9Compare Source
v0.5.8Compare Source
v0.5.7Compare Source
v0.5.6Compare Source
v0.5.5Compare Source
v0.5.4Compare Source
v0.5.3Compare Source
v0.5.2Compare Source
v0.5.1Compare Source
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.