Skip to main content

langchain-agent-memory-guard

PyPI License OWASP

LangChain middleware integration for OWASP Agent Memory Guard — runtime defense against AI agent memory poisoning attacks (OWASP ASI06).

Overview

This middleware protects LangChain agents by scanning model inputs, outputs, and tool results for:

  • Prompt injection — Detects injected instructions hidden in memory/context
  • Secret leakage — Catches API keys, tokens, and credentials in responses
  • Content anomalies — Flags abnormally large payloads that may indicate stuffing attacks
  • Protected key tampering — Prevents unauthorized modification of critical memory fields

Installation

pip install langchain-agent-memory-guard

Quick Start

from langchain_agent_memory_guard import MemoryGuardMiddleware
from langchain.agents import create_agent

# Basic usage with strict security policy (recommended)
agent = create_agent(
    "openai:gpt-4o",
    tools=[my_search_tool, my_db_tool],
    middleware=[MemoryGuardMiddleware()],
)

# The agent is now protected — any memory poisoning attempts
# in tool outputs or context will be detected and blocked
result = agent.invoke({"messages": [("user", "Search for recent news")]})

Configuration

Violation Handling Modes

# Block mode (default) — raises MemoryGuardViolation on detection
middleware = MemoryGuardMiddleware(on_violation="block")

# Warn mode — logs warning but allows execution to continue
middleware = MemoryGuardMiddleware(on_violation="warn")

# Strip mode — silently removes violating content
middleware = MemoryGuardMiddleware(on_violation="strip")

Custom Security Policy

from agent_memory_guard import Policy, PolicyRule

# Only check for injection and secrets (skip size checks)
policy = Policy(rules=[PolicyRule.NO_INJECTION, PolicyRule.NO_SECRETS])
middleware = MemoryGuardMiddleware(policy=policy)

# Full strict policy with custom protected keys
policy = Policy.strict(protected_keys=["user.api_key", "system.config"])
middleware = MemoryGuardMiddleware(policy=policy)

How It Works

The middleware hooks into three points in the LangChain agent loop:

Hook What It Scans Threat Mitigated
before_model Messages in agent state Injection in memory/context
after_model Model response content Secret leakage, injection propagation
wrap_tool_call Tool output content Injection via tool results (primary attack vector)

Why Tool Output Scanning Matters

Tool outputs are the primary vector for memory poisoning. An attacker can embed prompt injection payloads in:

  • Web pages fetched by a search tool
  • Database records returned by a query tool
  • API responses from external services

This middleware catches these attacks before they can influence the agent's behavior.

Error Handling

from langchain_agent_memory_guard import MemoryGuardMiddleware
from langchain_agent_memory_guard.middleware import MemoryGuardViolation

middleware = MemoryGuardMiddleware(on_violation="block")

try:
    result = agent.invoke({"messages": [("user", "Process this data")]})
except MemoryGuardViolation as e:
    print(f"Attack detected: {e}")
    # Handle the violation (alert, log, fallback response, etc.)

Metrics

middleware = MemoryGuardMiddleware()
# ... after running the agent ...
print(f"Total violations detected: {middleware.violation_count}")

Related

License

Apache 2.0

Release files for langchain-agent-memory-guard 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for langchain-agent-memory-guard 0.1.0
File Size Uploaded
langchain_agent_memory_guard-0.1.0.tar.gz 6.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for langchain-agent-memory-guard 0.1.0
File Interpreter ABI Platform
langchain_agent_memory_guard-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 13.5 kB

Release files / langchain_agent_memory_guard-0.1.0.tar.gz

Download URL langchain_agent_memory_guard-0.1.0.tar.gz
Size 6.9 kB
Tags Source
SHA-256 checksum
How to use checksums
64d3944954a1416d50c3fcc447bb88968f799100ef2e88b56ee6567d3131b42e
BLAKE2b-256 checksum
How to use checksums
37c69febfd778bd0ba85dea2f4e768f67ad695542dc619216f0c2b8379f64de9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.0rc1

Release files / langchain_agent_memory_guard-0.1.0-py3-none-any.whl

Download URL langchain_agent_memory_guard-0.1.0-py3-none-any.whl
Size 6.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6761af54bc82909075fe13e308336da58e793b5ba89c57777aacb547c5afe083
BLAKE2b-256 checksum
How to use checksums
e069a420d388c4822f90f22f2ed6744bc997d40c1100fb8aa1cf54f00692ad18
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.0rc1

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page