Deploying a LangChain Deep Agent that uses AgentCore Browser through the CLI fails at two points. Both are in the deployment path rather than in the agent, and together they blocked me from using the CLI at all: I fell back to a boto3 deploy script, which is roughly 220 lines a sample should not need to carry.
1. The generated execution role is missing browser permissions.
An agent that calls AgentCore Browser needs bedrock-agentcore:StartBrowserSession. The role the CLI creates does not include it, so the deploy succeeds and the first invocation fails:
AccessDeniedException: User: arn:aws:sts::<account>:assumed-role/<generated-role>/...
is not authorized to perform: bedrock-agentcore:StartBrowserSession
The same agent works when the role is created by hand with that action added. Code interpreter agents are unaffected, so this looks specific to the browser tool actions being absent from the generated policy.
2. The deployment zip drops the executable bit on the Playwright driver.
With the role fixed, the browser still does not start:
PermissionError: [Errno 13] Permission denied:
'/var/task/playwright/driver/node'
playwright ships a bundled node binary that must stay executable. The zip the CLI builds appears not to preserve file modes, so the extracted binary is not executable in the runtime. Anything with a bundled executable in its wheel hits this, not only Playwright.
Reproduce
An agent built with create_deep_agent from deepagents, with subagents using create_browser_toolkit from langchain-aws, deployed with the CLI. Dependencies: langchain-aws[tools]>=1.7.6, deepagents>=0.7.13, bedrock-agentcore>=1.23.0, aws-opentelemetry-distro, opentelemetry-instrumentation-langchain. Region us-west-2, CLI 0.29.0.
Separately: --include-domains is missing for the web search connector.
translateWebSearch in src/cli/operations/connectors/translators.ts builds parameterValues.domainFilter from excludeDomains only, and there is no includeDomains anywhere in src/. The SDK's GatewayClient.create_web_search_target() accepts both include and exclude lists, so a target that restricts search to a set of trusted domains cannot be created through the CLI today. Restricting to trusted sources is the more common of the two filters in my experience.
Deploying a LangChain Deep Agent that uses AgentCore Browser through the CLI fails at two points. Both are in the deployment path rather than in the agent, and together they blocked me from using the CLI at all: I fell back to a boto3 deploy script, which is roughly 220 lines a sample should not need to carry.
1. The generated execution role is missing browser permissions.
An agent that calls AgentCore Browser needs
bedrock-agentcore:StartBrowserSession. The role the CLI creates does not include it, so the deploy succeeds and the first invocation fails:The same agent works when the role is created by hand with that action added. Code interpreter agents are unaffected, so this looks specific to the browser tool actions being absent from the generated policy.
2. The deployment zip drops the executable bit on the Playwright driver.
With the role fixed, the browser still does not start:
playwrightships a bundlednodebinary that must stay executable. The zip the CLI builds appears not to preserve file modes, so the extracted binary is not executable in the runtime. Anything with a bundled executable in its wheel hits this, not only Playwright.Reproduce
An agent built with
create_deep_agentfromdeepagents, with subagents usingcreate_browser_toolkitfromlangchain-aws, deployed with the CLI. Dependencies:langchain-aws[tools]>=1.7.6,deepagents>=0.7.13,bedrock-agentcore>=1.23.0,aws-opentelemetry-distro,opentelemetry-instrumentation-langchain. Region us-west-2, CLI 0.29.0.Separately:
--include-domainsis missing for the web search connector.translateWebSearchinsrc/cli/operations/connectors/translators.tsbuildsparameterValues.domainFilterfromexcludeDomainsonly, and there is noincludeDomainsanywhere insrc/. The SDK'sGatewayClient.create_web_search_target()accepts both include and exclude lists, so a target that restricts search to a set of trusted domains cannot be created through the CLI today. Restricting to trusted sources is the more common of the two filters in my experience.