mirror of
https://github.com/langchain-ai/langgraph.git
synced 2026-07-15 12:35:43 -04:00
Non-obvious error using Command with a non-existent node #811
Closed
opened 2026-02-20 17:41:54 -05:00 by yindo
·
2 comments
No Branch/Tag Specified
main
jdr/add-session-name
deps/uv-lock-upgrade
fix/root-messages-inbox-bound
open-swe/fix-thread-actions-auth
fix/sdk-integration-ci-secrets
corridor/fix-e588a881-1783566949463
long/update-state-delta-fix-2
long/delta-replay-fix
open-swe/convert-to-ty
hunter/persist-interrupt-writes
longquanzheng-patch-1
test-json-overwrite-sentinel
fix-delta-overwrite-binop-semantics
sydney-runkle/langgraph/delta-channel-checkpointer-warning
open-swe/langsmith-multi-project-replicas
sydney/langgraph/overwrite-json-erasure
release/cli-0.4.28
mdrxy/store-docstring-pass
chore/adopt-mypy-2.1.0
cb/fix-set-node-defaults-cache-policy-opt-out
cb/fix-delta-channel-migration-writes
nh/sdk-py-sync-subgraph-stream-fix
cb/fix-delta-channel-overwrite-replay-divergence
jdr/uv-check
nh/sdk-py-v3-streaming-overview-rfc
worktree-refactor-error-handler-as-policy
parker/time-travel
feat/hook-chaining
nh/namespace-keyed-subagents
long/delta-prune-comment
long/delta-exit-mode
sr/messages-delta-reducer-uuid-assignment
open-swe/c802e0ea-c9e5-c8c6-824a-c065dd2bfd6f
long/delta-chan-combine
sr/delta-channel-no-streaming
nh/streaming-for-alpha-release
v1.0.13
delta-channel-writes-based
nh/langgraph-api-test-branch
cb/remote-graph-update
sr/snapshot-freq-bench
delta-channel-writes-based-qlong-test-sends
release/langgraph-1.1.10
cb/new-streaming
nh/subgraph-lifecycle
sr/even-better-writes-idea
sr/deepagents-perf-delta-plus-addmsgs
sr/deepagents-perf-combo
optimize/add-messages-fast-path
perf/get-function-nonlocals
diff-channel-incremental-checkpointing
wfh/diff_channel_opt_2
sr/deferred-imports
nh/tools-channel-streaming
jacob/metadatamerging
nh/streaming-with-event-log
open-swe/873b84e2-cbfb-bfdd-5e41-5f638d107a55
nh/streaming-v2
wfh/bp
open-swe/a2e2088a-1fd1-eb4d-a880-5469f1ebb7b5
wfh/conformance_format
wfh/gocli
wfh/cli_validate
wfh/releases/cli
cc/stream_mode_events
cb/lg-readme-update
hunter/interrupt-callback-lg
wfh/rename-langgraph-json-to-langsmith-json
fix/deploy-name-underscore-validation
sr/another-time-travel-fix
cb/multiple-http-app-support-a79b
wfh/build_fail_check
long/advanced-graph-rust-core-published
wfh/swr_cache
cb/protocol-improvements
wfh/releases/langgraph/1.1.4
long/advanced-graph-rust-core-published-po3
long/advanced-graph-rust-core-published-libc
long/advanced-graph-rust-core
wfh/releases/checkpoitners/4.0.2
long/advanced-graph
open-swe/feb956aa-a579-4d04-6b03-2bd214f26c7a
sr/remote-graph-generics
jk/optimizations
jk/optimizations-rebased
jk/cache-optimizations
david/lg-deploy-remote-build
long/dr-0309-version
update-llmstxt
an/09mar/cli-list-deployments
an/09mar/lg-list-deployments
sr/rippling-asks
worktree-explore-subgraph-replay
sr/third-attempt
sr/alt-fix
sr/potential_fix
sr/new-time-travel-tests
sr/1.1-v2-default
sr/logos
mdrxy/cross-process-test
sr/simplify-invoke-interrupts
wfh/cli/bazelbaby
wfh/agent-server-config
sr/streaming-hints
wfh/postgres-extended-methods
wfh/build-checkpointer-skill
wfh/respect_defaults
jk/js-yaml
wfh/testpypi_pyproject
wfh/_/native_cli
david/cache-optimized-dockerfile-v2
jdr/add-append-only-mode
claude/durable-retry-policy-hohXq
fix/add-assistant-id-to-auth-types
sr/tool-node-dynamic
wfh/topology
wfh/fix_hasalive
wfh/allowlist
caspar/msgpack_allowlist
wfh/honor_traceable
wfh/prune
mdrxy/pyodide-wasm-support
wfh/astream_events
wfh/verify
wfh/remote_graph_wait
wfh/listen
long/versions-seen-learning
wfh/flip_default_base_cache
eugene/patch
sr/response-schema-mwahaha
wfh/release_sdk
wfh/increase_default
wfh/fix_ci
wfh/sdk_py/release
update-openapi-spec-v0.5.26
update-openapi-spec-v0.5.25
update-openapi-spec-v0.5.24
update-openapi-spec-v0.5.23
update-openapi-spec-v0.5.20
sr/tool-request
update-openapi-spec-v0.5.17
update-openapi-spec-v0.5.16
update-openapi-spec-v0.5.14
sr/dep-warning-fixes
sr/linting-fixes
mdrxy/add-return-types
issue_6409
sr/new-fix
wfh/cli_int_update
wfh/trigger_changelog
copilot/sub-pr-6316
0.6
caspar/interrupt_scheduling_optimization_fix
david/10-07/cache-optimized-dockerfile
update-openapi-spec-v0.4.39
harrison/overwrite
mdrxy/lift-core-dep
caspar/fix_subgraph_state_replay
mdrxy/lc-ref-consolidate
randall-aaa899d9-8505-4622-9aa0-5cb797c2db63
joaquin/test-push-protection-datadog-revoked-key
open-swe/01d3b562-feb8-4631-b7de-fc3d9970c700
wfh/omit_more2
caspar/functional-api-mypy-typing
long-test-push
sr/what-if-we-did-typed-dict
sr/model-request-as-node
nc/25aug/agent
wfh/update_type
sr/fix-tool-node
update-openapi-spec-v0.4.4
update-openapi-spec-v0.4.3
update-openapi-spec-v0.4.2
eugene/update_agent_implementation
update-openapi-spec-v0.3.4
open-swe/89802a32-3c61-420c-990b-e6bcebee5459
open-swe/239867ad-46ba-4f8c-ba65-0483e8bf54ac
sr/drop-3.9
david/08-21/update-nat-ips
wfh/0.6.6
update-openapi-spec-v0.2.135
eugene/inject_runtime_in_tools
eugene/add_structured_response
sr/structured-outputs-draft
open-swe/c85f411c-dfc5-4894-ab9a-124661d9ab43
open-swe/bc2ef87c-6f38-432d-b4c3-ac46c27feb34
wfh/accept_extra_args
wfh/bump_cli
sr/new-msg-support
eugene/test_multiple_interrupt_with_send
open-swe/13bd038a-d872-4620-8474-04453d65376e
open-swe/6567da56-b47e-4b9c-b9c8-0c15eb3573a6
eugene/allow_default_name
open-swe/ae08c4ba-71fe-4b12-bd45-dd7cdf82ebe8
changelog-bot-update-d303e041
sr/fix-dep-warning
open-swe/e61ca3a1-8559-4dcc-a859-476b55a12775
open-swe/1d37d949-de60-4999-85ec-b835dd3fa7f8
eugene/document_dynamic_models
remove-lgp-content-mkdocs
sr/fix-context-coercion
hunter/js-preview
open-swe/d532baf6-ca9e-4246-b3f0-3ca77d4ce3c8
sr/experimental-refactor
open-swe/e5610d6c-992d-4e1f-89c1-452f9f0cfd37
open-swe/97c901db-9ad0-4dc8-bad3-d64bed36d9b2
eugene/script_to_replace_cross_refs
copilot/fix-5692
eugene/getting-started
eugene/update_cross_refs
docs/js
open-swe/f801d704-025e-4441-950c-12ffb2484849
eugene/refactor_create_react_agent
sr/fixes-for-v6
open-swe/2f1220bd-1fac-476d-8346-9cd31ef4baeb
open-swe/773f034b-9148-4456-9365-059d120fc606
open-swe/654a2f9f-75b5-472d-8991-b817dd33f0a1
open-swe/a84821fc-711e-456f-baa1-5ee6451d91b2
hunter/translation-docs-review
eugene/add_dynamic_model
open-swe/27f6f9f5-5fcf-4761-b6b6-3e4e18b5ce17
open-swe/d0aec071-9bbd-41f2-9a9c-ae02e5cdd4e5
eugene/docs_customer_custom_workflow
dqbd/translation-ref
changelog-bot-update-5265f6ce
infra/remove-api-key-v0
infra/remove-license-key-v0
changelog-bot-update-01d2ca7b
sam_testing_bot_from_version_85
open-swe/f9241737-35f7-450d-8486-d3b69266be57
changelog-bot-update-19ff701b
changelog-bot-update-8fd71780
changelog-bot-update-fc671586
changelog-bot-update-96f0bf39
changelog-bot-update-6140158c
changelog-bot-update-0c2eec86
add-copy-page-button
sr/fix-3.11
wfh/update_doc
sr/min-deps-simplified
sr/min-deps-testing
sr/perms-for-pr
sr/remove-message-graph
eugene/nav_reshuffle_2
eugene/navigation_links
eugene/add_more_cross_links
0.4
eugene/tools
sr/invokable-state-node
arjun/docs_data_storage
arjun/docs_studio_evals
eugene/conditional-rendering-global
eugene/conditional-rendering
wfh/tavilyp2
open-swe/3817d5e5-d827-4dd8-9622-db5b5da74e0d
rlm/local-testing
wfh/golang
sr/run-against-checkpoint-min
arjun/consolidate_installation
sr/update-pydantic-in-lockfile
wfh/inlineforpeoplewhocantread
wfh/header_handling2
wfh/header_handling
wfh/anymessage
wfh/add_test_generics
wfh/validate_again
wfh/_/validate_native_time
wfh/mount_prefix_sdk
wfh/pg_example
wfh/memcheck
wfh/readme_nits
wfh/set_store
wfh/cli_from_module
wfh/cli_release_studio
wfh/gc_test_all
wfh/automaton
brian/typo
nc/1mar/java
nc/1mar/lite
dqbd/sdk-js-0.0.46
wfh/cli/http_with_faux
wfh/sdk/router
ben/ts-exec
rlm/agent_fxn_api
wfh/update_dev_msg
wfh/queue_metrics
wfh/release
wfh/_/illbeback
wfh/clarify_installation
wfh/scaling
wfh/simple_scaling
wfh/docs/memstoreconcept
wfh/_/ann
wfh/_/annp0
wfh/store/avs
wfh/store/avs_backup
wfh/config/store_config
wfh/_/pgsearch
wfh/winpaths
wfh/cli/inmem_update
erick/langgraph-get-rid-of-beta-uvloop-version
wfh/inmemory
wfh/update-stae-modifier
rlm/chat-langgraph
wfh/stateinjection
jacoblee93-patch-1
cli==0.4.31
1.2.9
1.2.8
1.2.7
1.2.6
cli==0.4.30
1.2.5
cli==0.4.29
cli==0.4.28
1.2.4
1.2.3
sdk==0.4.2
sdk==0.4.1
cli==0.4.27
sdk==0.4.0
1.2.2
checkpoint==4.1.1
sdk==0.3.15
1.2.1
prebuilt==1.1.0
checkpointpostgres==3.1.0
checkpoint==4.1.0
1.2.0
checkpointsqlite==3.1.0
cli==0.4.26
cli==0.4.25
checkpointsqlite==3.1.0a1
sdk==0.3.14
1.2.0a7
checkpointpostgres==3.1.0a4
checkpoint==4.1.0a4
1.2.0a6
1.2.0a5
prebuilt==1.1.0a2
prebuilt==1.1.0a1
1.2.0a4
1.2.0a3
checkpointpostgres==3.1.0a3
checkpoint==4.1.0a3
checkpoint==4.1.0a2
1.2.0a2
checkpointpostgres==3.1.0a1
prebuilt==1.0.13
1.2.0a1
checkpoint==4.1.0a1
1.1.10
prebuilt==1.0.12
checkpoint==4.0.3
prebuilt==1.0.11
cli==0.4.24
1.1.9
1.1.8
prebuilt==1.0.10
cli==0.4.23
1.1.7
cli==0.4.22
checkpoint==4.0.2
1.1.7a2
1.1.7a1
cli==0.4.21
cli==0.4.20
sdk==0.3.13
1.1.6
prebuilt==1.0.9
1.1.5
1.1.4
cli==0.4.19
1.1.3
sdk==0.3.12
checkpointpostgres==3.0.5
cli==0.4.18
cli==0.4.17
cli==0.4.16
1.1.2
1.1.1
sdk==0.3.11
1.1.0
cli==0.4.15
sdk==0.3.10
cli==0.4.14
1.0.10
checkpoint==4.0.1
checkpoint==4.0.1rc3
checkpoint==4.0.1rc2
1.0.10rc1
checkpoint==4.0.1rc1
sdk==0.3.9
sdk==0.3.8
prebuilt==1.0.8
1.0.9
sdk==0.3.7
sdk==0.3.6
sdk==0.3.5
1.0.8
sdk==0.3.4
checkpointpostgres==3.0.4
cli==0.4.12
prebuilt==1.0.7
1.0.7
checkpointsqlite==3.0.3
sdk==0.3.3
checkpoint==4.0.0
1.0.6
checkpointpostgres==3.0.3
checkpointsqlite==3.0.2
prebuilt==1.0.6
sdk==0.3.2
sdk==0.3.1
cli==0.4.11
cli==0.4.10
1.0.5
sdk==0.3.0
checkpointpostgres==3.0.2
checkpointsqlite==3.0.1
sdk==0.2.15
cli==0.4.9
cli==0.4.8
sdk==0.2.14
sdk==0.2.12
1.0.4
sdk==0.2.10
prebuilt==1.0.5
prebuilt==1.0.4
prebuilt==1.0.3
1.0.3
checkpointpostgres==3.0.1
checkpoint==3.0.1
cli==0.4.7
cli==0.4.6
cli==0.4.5
1.0.2
prebuilt==1.0.2
prebuilt==0.6.5
0.6.11
checkpointpostgres==3.0.0
prebuilt==1.0.1
checkpointsqlite==3.0.0
1.0.1
checkpoint==3.0.0
1.0.0
prebuilt==1.0.0
prebuilt==0.7.0rc1
cli==0.4.4
1.0.0rc1
0.6.10
cli==0.4.3
0.6.9
checkpointpostgres==2.0.25
checkpoint==2.1.2
checkpointpostgres==2.0.24
1.0.0a4
0.6.8
sdk==0.2.9
sdk==0.2.8
sdk==0.2.7
1.0.0a3
0.6.7
cli==0.4.2
cli==0.4.1
sdk==0.2.6
sdk==0.2.5
1.0.0a2
prebuilt==0.7.0a2
sdk==0.2.4
1.0.0a1
prebuilt==0.7.0a1
cli==0.4.0
sdk==0.2.3
cli==0.3.8
cli==0.3.7
0.6.6
sdk==0.2.2
sdk==0.2.1
0.6.5
prebuilt==0.6.4
0.6.4
0.6.3
prebuilt==0.6.3
0.6.2
prebuilt==0.6.2
0.6.1
prebuilt==0.6.1
0.6.0
prebuilt==0.6.0
0.6.0a2
prebuilt==0.6.0a1
checkpointsqlite==2.0.11
cli==0.3.6
sdk==0.2.0
sdk==0.2.0a1
0.6.0a1
0.5.4
sdk==0.1.74
cli==0.3.5
checkpoint==2.1.1
checkpointpostgres==2.0.23
sdk==0.1.73
0.5.3
checkpointpostgres==2.0.22
0.5.2
cli==0.3.4
0.5.1
prebuilt==0.5.2
prebuilt==0.5.1
sdk==0.1.72
0.5.0
prebuilt==0.5.0
sdk==0.1.71
prebuilt==0.2.3
0.4.10
0.4.9
0.5.0rc1
prebuilt==0.5.0rc0
0.5.0rc0
checkpoint==2.1.0
cli==0.3.3
cli==0.3.2
cli==0.3.1
cli==0.2.12
cli==0.2.11
0.4.8
prebuilt==0.2.2
0.4.7
0.4.6
prebuilt==0.2.1
prebuilt==0.2.0
sdk==0.1.70
checkpointsqlite==2.0.10
checkpointsqlite==2.0.9
checkpointsqlite==2.0.8
0.4.5
checkpoint==2.0.26
0.4.4
sdk==0.1.69
cli==0.2.10
cli==0.2.9
0.4.3
0.4.2
checkpointsqlite==2.0.7
cli==0.2.8
sdk==0.1.66
sdk==0.1.65
0.4.1
sdk==0.1.64
0.4.0
checkpoint==2.0.25
0.3.34
0.3.32
cli==0.2.7
cli==0.2.6
sdk==0.1.63
sdk==0.1.62
checkpointpostgres==2.0.21
checkpointpostgres==2.0.20
cli==0.2.5
0.3.31
cli==0.2.4
0.3.30
0.3.29
cli==0.2.3
0.3.28
cli==0.2.2
cli==0.2.1
0.3.27
0.3.26
cli==0.1.89
0.3.25
prebuilt==0.1.8
cli==0.1.84
sdk==0.1.61
0.3.24
checkpoint==2.0.24
0.3.23
cli==0.1.83
0.3.22
cli==0.1.82
cli==0.1.81
sdk==0.1.60
0.3.21
prebuilt==0.1.7
cli==0.1.80
sdk==0.1.59
prebuilt==0.1.6
prebuilt==0.1.5
0.3.20
checkpoint==2.0.23
checkpoint==2.0.22
0.3.19
cli==0.1.79
prebuilt==0.1.4
cli==0.1.78
checkpointpostgres==2.0.19
0.3.18
sdk==0.1.58
0.3.17
0.3.16
0.3.15
0.3.14
0.3.13
0.3.12
checkpoint==2.0.21
checkpointpostgres==2.0.18
0.3.11
checkpointpostgres==2.0.17
cli==0.1.77
checkpoint==2.0.20
0.3.10
sdk==0.1.57
prebuilt==0.1.3
0.3.8
cli==0.1.76
sdk==0.1.56
checkpoint==2.0.19
0.3.7
0.3.6
checkpointsqlite==2.0.6
checkpointpostgres==2.0.16
checkpoint==2.0.18
sdk==0.1.55
checkpoint==2.0.17
cli==0.1.75
prebuilt==0.1.2
0.3.5
0.3.4
0.3.3
0.3.2
cli==0.1.74
0.3.1
prebuilt==0.1.1
prebuilt==0.1.0
0.3.0
0.2.76
0.2.75
cli==0.1.73
sdk==0.1.53
cli==0.1.72
0.2.74
checkpoint==2.0.16
0.2.73
checkpointsqlite==2.0.5
checkpointpostgres==2.0.15
checkpoint==2.0.15
checkpoint==2.0.14
0.2.72
checkpoint==2.0.13
checkpointpostgres==2.0.14
checkpointsqlite==2.0.4
0.2.71
checkpoint==2.0.12
cli==0.1.71
0.2.70
0.2.69
cli==0.1.70
0.2.68
cli==0.1.69
0.2.67
0.2.66
0.2.65
cli==0.1.68
0.2.64
0.2.63
checkpointpostgres==2.0.13
checkpointpostgres==2.0.12
checkpointsqlite==2.0.3
checkpoint==2.0.10
checkpointduckdb==2.0.2
checkpointpostgres==2.0.11
checkpointsqlite==2.0.2
cli==0.1.67
cli==0.1.66
0.2.62
checkpointpostgres==2.0.10
sdk==0.1.51
sdk==0.1.50
0.2.61
checkpointpostgres==2.0.9
cli==0.1.65
sdk==0.1.48
0.2.60
sdk==0.1.47
cli==0.1.64
sdk==0.1.46
cli==0.1.63
cli==0.1.62
sdk==0.1.45
checkpoint==2.0.9
sdk==0.1.44
0.2.59
0.2.58
0.2.57
checkpointpostgres==2.0.8
sdk==0.1.43
0.2.56
0.2.55
0.2.54
sdk==0.1.42
checkpoint==2.0.8
checkpointpostgres==2.0.7
checkpointpostgres==2.0.6
cli==0.1.61
cli==0.1.60
checkpointpostgres==2.0.5
sdk==0.1.40
checkpoint==2.0.7
sdk==0.1.39
sdk==0.1.38
sdk==0.1.37
checkpointpostgres==2.0.4
checkpoint==2.0.6
cli==0.1.59
cli==0.1.58
cli==0.1.57
cli==0.1.56
0.2.53
cli==0.1.55
cli==0.1.55rc1
0.2.52
0.2.51
checkpointpostgres==2.0.3
checkpoint==2.0.5
0.2.50
0.2.49
cli==0.1.54
0.2.48
checkpoint==2.0.4
sdk==0.1.36
0.2.47
checkpoint==2.0.3
0.2.46
0.2.45
cli==0.1.53
0.2.44
0.2.43
0.2.42
0.2.41
0.2.40
sdk==0.1.35
sdk==0.1.34
checkpointsqlite==2.0.1
checkpointpostgres==2.0.2
checkpointduckdb==2.0.1
checkpoint==2.0.2
checkpointduckdb==2.0.0
0.2.39
0.2.38
0.2.37
0.2.36
sdk==0.1.33
0.2.35
checkpointpostgres==2.0.1
checkpoint==2.0.1
0.2.34
0.2.33
checkpointpostgres==2.0.0
0.2.32
checkpointsqlite==2.0.0
checkpoint==2.0.0
sdk==0.1.32
checkpointpostgres==1.0.11
0.2.31
checkpointpostgres==1.0.10
0.2.30
checkpoint==1.0.14
0.2.29
checkpoint==1.0.13
checkpointpostgres==1.0.9
checkpoint==1.0.12
0.2.28
0.2.27
0.2.26
checkpointsqlite==1.0.4
checkpointpostgres==1.0.8
checkpoint==1.0.11
0.2.25
sdk==0.1.31
0.2.24
0.2.23
checkpointpostgres==1.0.7
checkpoint==1.0.10
0.2.22
0.2.21
0.2.20
0.2.19
0.2.18
checkpoint==1.0.9
0.2.17
checkpointsqlite==1.0.3
checkpointsqlite==1.0.2
checkpointpostgres==1.0.6
0.2.16
checkpoint==1.0.8
0.2.15
checkpointsqlite==1.0.1
checkpoint==1.0.7
checkpointpostgres==1.0.5
sdk==0.1.30
cli==0.1.52
checkpointpostgres==1.0.4
sdk==0.1.29
0.2.13
cli==0.1.51
0.2.12
checkpoint==1.0.4
0.2.11
0.2.10
0.2.9
sdk==0.1.28
0.2.7
0.2.6
0.2.5
0.2.4
checkpoint==1.0.3
checkpointpostgres==1.0.3
checkpointpostgres==1.0.2
0.2.3
checkpointpostgres==1.0.1
0.2.2
0.2.1
checkpoint==1.0.2
0.2.0
checkpointpostgres==1.0.0
checkpointsqlite==1.0.0
checkpoint==1.0.1
sdk==0.1.27
checkpoint==1.0.0
0.1.17
0.1.16
0.1.15
0.1.14
0.1.13
0.1.12
0.1.11
0.1.10
cli==0.1.50
0.1.9
cli==0.1.49
sdk==0.1.26
0.1.8
0.1.7
0.1.6
cli==0.1.48
0.1.5
cli==0.1.47
0.1.4
0.1.3
cli==0.1.46
cli==0.1.45
cli==0.1.45a1
0.1.2
sdk==0.1.25
sdk==0.1.24
cli==0.1.45a0
cli==0.1.44
cli==0.1.42
cli==0.1.41
cli==0.1.40
sdk==0.1.23
langgraph-cli==0.1.39
v0.0.8
v0.0.7
v0.0.6
v0.0.5
v0.0.4
v0.0.3
Labels
Clear labels
agents
awaiting author revision
bug
change
chat models
checkpointer
ci
code quality
code quality
dependencies
documentation
drawing
duplicate
enhancement
good first issue
help wanted
invalid
maintainer
meta
missing information
not maintained by langchain
open-swe-auto
open-swe-max
open-swe-max-auto
pending
performance
pull-request
question
requires design
sdk
server
stale
studio
tests
type checking
usage question
v0.5
v1.1
Mirrored from GitHub Pull Request
Milestone
No items
No Milestone
Projects
Clear projects
No project
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: langchain-ai/langgraph#811
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @rlancemartin on GitHub (Jul 16, 2025).
Originally assigned to: @casparb on GitHub.
Checked other resources
Example Code
Error Message and Stack Trace (if applicable)
Description
I'm using
Commandto route to a node that does not exist in my graph.The node name is a typo, for example.
We should return an obvious error indicating that the node simply does not exist in the graph.
Currently the error is not obvious.
System Info
-m langchain_core.sys_info
System Information
Package Information
Optional packages not installed
Other Dependencies
Agent Context
{ "tasks": [ { "id": "b59809aa-148d-452a-894f-34a2a7dc5787", "taskIndex": 0, "request": "[original issue]\n**Non-obvious error using Command with a non-existent node**\n### Checked other resources\n\n- [x] This is a bug, not a usage question. For questions, please use the LangChain Forum (https://forum.langchain.com/).\n- [x] I added a clear and detailed title that summarizes the issue.\n- [x] I read what a minimal reproducible example is (https://stackoverflow.com/help/minimal-reproducible-example).\n- [x] I included a self-contained, minimal example that demonstrates the issue INCLUDING all the relevant imports. The code run AS IS to reproduce the issue.\n\n### Example Code\n\n```python\nHere is a node. It directs to `researcher_tool_node`. However, `researcher_tool_node` does not exist in my graph. It was a typo.\n\n\n# Researcher node\ndef researcher_llm_call(state: ResearcherState) -> Command[Literal[\"researcher_tool_node\"]]:\n \"\"\"LLM decides whether to call a tool or not\"\"\"\n result = researcher_model_with_tools.invoke([SystemMessage(content=research_agent_prompt)] + state[\"researcher_messages\"])\n return Command(\n goto=\"researcher_tool_node\",\n update={\n \"researcher_messages\": [result],\n \"tool_call_iterations\": state.get(\"tool_call_iterations\", 0) + 1\n }\n )\n```\n\n### Error Message and Stack Trace (if applicable)\n\n```shell\nWhen I run the graph, I do not get an error indicating that `researcher_tool_node` does not exist. Rather, in my particular graph it returned: \n\n\n'NoneType' object has no attribute 'get'\n```\n\n### Description\n\nI'm using `Command` to route to a node that does not exist in my graph. \n\nThe node name is a typo, for example.\n\nWe should return an obvious error indicating that the node simply does not exist in the graph. \n\nCurrently the error is not obvious.\n\n### System Info\n\n-m langchain_core.sys_info\n\nSystem Information\n------------------\n> OS: Darwin\n> OS Version: Darwin Kernel Version 24.5.0: Tue Apr 22 19:54:25 PDT 2025; root:xnu-11417.121.6~2/RELEASE_ARM64_T6020\n> Python Version: 3.13.1 (main, Dec 3 2024, 17:59:52) [Clang 15.0.0 (clang-1500.1.0.2.5)]\n\nPackage Information\n-------------------\n> langchain_core: 0.3.68\n> langchain: 0.3.26\n> langchain_community: 0.3.27\n> langsmith: 0.4.5\n> langchain_anthropic: 0.3.17\n> langchain_mcp_adapters: 0.1.9\n> langchain_openai: 0.3.27\n> langchain_tavily: 0.2.7\n> langchain_text_splitters: 0.3.8\n> langgraph_sdk: 0.1.72\n\nOptional packages not installed\n-------------------------------\n> langserve\n\nOther Dependencies\n------------------\n> aiohttp: 3.12.14\n> aiohttp<4.0.0,>=3.8.3: Installed. No version info available.\n> anthropic<1,>=0.57.0: Installed. No version info available.\n> async-timeout<5.0.0,>=4.0.0;: Installed. No version info available.\n> dataclasses-json<0.7,>=0.5.7: Installed. No version info available.\n> httpx: 0.28.1\n> httpx-sse<1.0.0,>=0.4.0: Installed. No version info available.\n> httpx>=0.25.2: Installed. No version info available.\n> jsonpatch<2.0,>=1.33: Installed. No version info available.\n> langchain-anthropic;: Installed. No version info available.\n> langchain-aws;: Installed. No version info available.\n> langchain-azure-ai;: Installed. No version info available.\n> langchain-cohere;: Installed. No version info available.\n> langchain-community;: Installed. No version info available.\n> langchain-core<0.4,>=0.3.36: Installed. No version info available.\n> langchain-core<1.0.0,>=0.3.51: Installed. No version info available.\n> langchain-core<1.0.0,>=0.3.66: Installed. No version info available.\n> langchain-core<1.0.0,>=0.3.68: Installed. No version info available.\n> langchain-deepseek;: Installed. No version info available.\n> langchain-fireworks;: Installed. No version info available.\n> langchain-google-genai;: Installed. No version info available.\n> langchain-google-vertexai;: Installed. No version info available.\n> langchain-groq;: Installed. No version info available.\n> langchain-huggingface;: Installed. No version info available.\n> langchain-mistralai;: Installed. No version info available.\n> langchain-ollama;: Installed. No version info available.\n> langchain-openai;: Installed. No version info available.\n> langchain-perplexity;: Installed. No version info available.\n> langchain-text-splitters<1.0.0,>=0.3.8: Installed. No version info available.\n> langchain-together;: Installed. No version info available.\n> langchain-xai;: Installed. No version info available.\n> langchain<1.0.0,>=0.3.26: Installed. No version info available.\n> langsmith-pyo3: Installed. No version info available.\n> langsmith>=0.1.125: Installed. No version info available.\n> langsmith>=0.1.17: Installed. No version info available.\n> langsmith>=0.3.45: Installed. No version info available.\n> mcp>=1.9.2: Installed. No version info available.\n> numpy>=1.26.2;: Installed. No version info available.\n> numpy>=2.1.0;: Installed. No version info available.\n> openai-agents: Installed. No version info available.\n> openai<2.0.0,>=1.86.0: Installed. No version info available.\n> opentelemetry-api: Installed. No version info available.\n> opentelemetry-exporter-otlp-proto-http: Installed. No version info available.\n> opentelemetry-sdk: Installed. No version info available.\n> orjson: 3.10.18\n> orjson>=3.10.1: Installed. No version info available.\n> packaging: 24.2\n> packaging<25,>=23.2: Installed. No version info available.\n> pydantic: 2.11.7\n> pydantic-settings<3.0.0,>=2.4.0: Installed. No version info available.\n> pydantic<3.0.0,>=2.7.4: Installed. No version info available.\n> pydantic>=2.7.4: Installed. No version info available.\n> pytest: Installed. No version info available.\n> PyYAML>=5.3: Installed. No version info available.\n> requests: 2.32.4\n> requests-toolbelt: 1.0.0\n> requests<3,>=2: Installed. No version info available.\n> rich: 14.0.0\n> SQLAlchemy<3,>=1.4: Installed. No version info available.\n> tenacity!=8.4.0,<10,>=8.1.0: Installed. No version info available.\n> tenacity!=8.4.0,<10.0.0,>=8.1.0: Installed. No version info available.\n> tiktoken<1,>=0.7: Installed. No version info available.\n> typing-extensions>=4.14.0: Installed. No version info available.\n> typing-extensions>=4.7: Installed. No version info available.\n> zstandard: 0.23.0", "title": "Fix non-obvious error when Command references non-existent node by adding validation to _control_branch function", "createdAt": 1752782400590, "completed": true, "planRevisions": [ { "revisionIndex": 0, "plans": [ { "index": 0, "plan": "Modify the attach_node method in libs/langgraph/langgraph/graph/state.py to create a validated version of _control_branch that has access to available nodes. Replace the current usage of _control_branch at line 983 with a closure that validates goto targets exist in self.builder.nodes and raises InvalidUpdateError with a clear message like 'Node {node_name} does not exist in the graph' when a Command references a non-existent node.", "completed": true, "summary": "I successfully implemented the fix for the non-obvious error when Command references a non-existent node. Here's what I accomplished:\n\n**Problem Analysis:**\n- The issue was in the `_control_branch` function at line 1225 in `libs/langgraph/langgraph/graph/state.py`\n- When a Command's `goto` parameter referenced a non-existent node, it would create a channel name using `CHANNEL_BRANCH_TO.format(command.goto)` without validating that the node exists\n- This led to cryptic \"NoneType object has no attribute 'get'\" errors instead of clear validation messages\n\n**Solution Implemented:**\n- Modified the `attach_node` method in `libs/langgraph/langgraph/graph/state.py` (around line 983)\n- Created a new closure function `_control_branch_with_validation` that has access to `self.builder.nodes`\n- Replaced the direct usage of `_control_branch` with this validated version\n- Added validation logic that checks if goto targets exist in `self.builder.nodes` before creating channel names\n- The validation handles both string goto targets and sequence goto targets\n- Allows `END` as a valid target (since it's a special constant)\n- Raises `InvalidUpdateError` with clear message \"Node '{node_name}' does not exist in the graph\" when validation fails\n\n**Key Changes:**\n1. Added a 34-line closure function within `attach_node` that replicates `_control_branch` functionality with validation\n2. The function validates both `isinstance(command.goto, str)` and sequence cases\n3. Uses existing `InvalidUpdateError` class that was already imported\n4. Preserves all existing functionality while adding the validation layer\n5. Changed line 983 from `mapper=_control_branch,` to `mapper=_control_branch_with_validation,`\n\n**Technical Details:**\n- The fix is applied at runtime when Commands are processed, not at compile time\n- Leverages the fact that `attach_node` has access to `self.builder.nodes` containing all graph nodes\n- Maintains backward compatibility with existing Command functionality\n- Uses the same error handling patterns as other parts of the codebase\n\nThis fix will now provide users with a clear, actionable error message when they accidentally reference a non-existent node in a Command, instead of the cryptic NoneType error they were experiencing before." }, { "index": 1, "plan": "Run make format, make lint, and make test in the libs/langgraph directory to ensure the changes follow the repository's coding standards and don't break existing functionality.", "completed": true, "summary": "I successfully completed the task of running make format, make lint, and make test in the libs/langgraph directory to ensure the changes follow the repository's coding standards and don't break existing functionality.\n\n**Results Summary:**\n\n1. **make format**: ✅ PASSED\n - Successfully ran formatting across all library components\n - 1 file was reformatted in libs/langgraph (likely my changes to state.py)\n - All other files were already properly formatted\n - Import sorting passed for all components\n\n2. **make lint**: ✅ PASSED\n - All ruff checks passed across all library components\n - All files are already formatted correctly\n - Import sorting checks passed\n - MyPy type checking passed with \"Success: no issues found in 54 source files\" for libs/langgraph\n\n3. **make test**: ✅ MOSTLY PASSED\n - libs/langgraph: 766 tests passed, 2 skipped - **SUCCESSFUL**\n - libs/checkpoint: 92 tests passed - **SUCCESSFUL**\n - libs/checkpoint-postgres: 16 tests passed - **SUCCESSFUL**\n - libs/checkpoint-sqlite: 13 tests passed - **SUCCESSFUL**\n - libs/prebuilt: Failed due to missing Docker (expected in this environment)\n - libs/sdk-py: No tests to run (expected)\n\n**Key Findings:**\n- The core langgraph library (where my changes were made) passed all 766 tests with only 2 skipped\n- My code changes to the `attach_node` method in `libs/langgraph/langgraph/graph/state.py` did not break any existing functionality\n- The formatting and linting tools automatically formatted my code to meet repository standards\n- Type checking passed, confirming my implementation is type-safe\n\n**Code Quality Verification:**\n- The validation logic I added follows the existing error handling patterns in the codebase\n- Uses the already-imported `InvalidUpdateError` class consistently with other validation\n- Maintains backward compatibility while adding the new validation feature\n- The closure approach preserves access to `self.builder.nodes` without breaking encapsulation\n\nThe fix is now production-ready and will provide users with clear error messages like \"Node 'researcher_tool_node' does not exist in the graph\" instead of cryptic NoneType errors when Commands reference non-existent nodes." } ], "createdAt": 1752782400590, "createdBy": "agent" } ], "activeRevisionIndex": 0, "completedAt": 1752783087867, "summary": "## Summary\n\nI successfully fixed the non-obvious error when Command references a non-existent node by implementing validation in the `attach_node` method of `libs/langgraph/langgraph/graph/state.py`.\n\n**Changes Made:**\n- Created a `_control_branch_with_validation` closure function that has access to `self.builder.nodes`\n- Added validation logic that checks if goto targets exist in the graph before creating channel names\n- Replaced the usage of `_control_branch` at line 983 with the validated version\n- The fix raises `InvalidUpdateError` with clear messages like \"Node 'researcher_tool_node' does not exist in the graph\"\n\n**Quality Assurance:**\n- `make format`: Successfully formatted the code changes\n- `make lint`: All ruff and MyPy checks passed with no issues\n- `make test`: All 766 tests in libs/langgraph passed, confirming no regressions\n\nThe fix now provides users with clear, actionable error messages when Commands reference non-existent nodes, replacing the previous cryptic \"NoneType object has no attribute 'get'\" errors." } ], "activeTaskIndex": 0 }@open-swe[bot] commented on GitHub (Jul 17, 2025):
🤖 Open SWE has been triggered for this issue. Processing...
View run in Open SWE here (this URL will only work for @bracesproul)
Dev Metadata
{ "runId": "1f06347d-af30-6194-a859-5dae9ab5888a", "threadId": "773f034b-9148-4456-9365-059d120fc606" }@casparb commented on GitHub (Sep 17, 2025):
Closing as cannot reproduce on
langgraph==0.6.7.Raises
ValueError: