[Feature] Add --state_file to adk run for loading initial session state from JSON
@sanketpatil06 ci sta già lavorando.
Dal 11/9/2026.
Valutazione
Questa issue non è ancora stata valutata.
Descrizione
🔴 Required Information
Is your feature request related to a specific problem?
adk run currently supports initial session state through --state, but the state must be passed as an inline JSON string:
adk run path/to/agent --state '{"customer_id": "123", "region": "us"}'
For realistic state payloads this becomes hard to use:
- Shell quoting differs across bash, zsh, PowerShell, and cmd.
- Larger state payloads are difficult to read, edit, and reuse.
- Sensitive or environment-specific values can end up in shell history.
- Generated state fixtures cannot be reused directly without wrapping them into a command-line string.
This is especially painful when testing agents that depend on session state, dynamic instructions, or state-backed tools.
I searched for existing issues/PRs targeting this specific CLI feature and did not find one for --state_file / --state-file. Related but distinct: #4961 proposes declarative initial state for adk web; this request is specifically for the adk run CLI path.
Describe the Solution You'd Like
Add a --state_file option to adk run that loads initial session state from a JSON file:
adk run path/to/agent --state_file state.json
adk run path/to/agent "hello" --state_file state.json
The file should contain a JSON object used as the initial session state.
Expected behavior:
--state_fileworks in both interactive mode and single-query mode.--stateand--state_fileare mutually exclusive.- Invalid JSON should surface the same style of error as invalid
--stateJSON. - Missing/unreadable files should be reported by Click as a normal CLI input error.
Impact on your work
This would make local agent development and repeatable testing much smoother for stateful agents. Instead of copying JSON into a shell command, developers could keep reusable fixtures like:
state.customer-a.json
state.debug.json
state.empty-cart.json
and run the same agent against each state file.
It also reduces quoting friction on Windows/PowerShell, where inline JSON can be particularly awkward.
Willingness to contribute
Yes. I can open a small PR if this direction looks reasonable.
🟡 Recommended Information
Describe Alternatives You've Considered
- Use
--statewith inline JSON. This works for tiny examples but becomes brittle for realistic payloads and varies by shell. - Use
--replay. This creates a session from an input file with queries, but it is a different workflow and not ideal when I only want to seed state and continue interactively or run a single query. - Add initialization logic in callbacks. This works, but puts local testing/setup state into agent code.
Proposed API / Implementation
The CLI already forwards --state as state_str into run_cli / run_once_cli, where the JSON parsing path already exists.
A minimal implementation could:
- Add a Click option on
adk run:
@click.option(
"--state_file",
type=click.Path(exists=True, dir_okay=False, file_okay=True, resolve_path=True),
help="Optional. Path to a JSON file containing initial state for the run.",
)
- Enforce that
--stateand--state_filecannot be used together. - Read the file as UTF-8 in
cli_runand pass the contents asstate_strto the existingrun_cli/run_once_clicalls. - Add unit tests under
tests/unittests/cli/utils/test_cli_tools_click.pycovering interactive mode, single-query mode, mutual exclusion, and bad/missing file behavior.
Additional Context
This is intentionally smaller than a broader declarative state feature. It only makes the existing adk run --state capability easier and safer to use with real JSON files.
- Lingua principale
- Python
- Stelle
- 21.6k
- Fork
- 4k
- Merge medio
- 13h 49m
- PR unite (30g)
- 10
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di google/adk-python
-
mcp
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
google/adk-python#7217 · 3 commenti · 1 assegnatario ·
-
tools
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
google/adk-python#7206 · 1 commento · 1 assegnatario ·
-
request clarification tools
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
google/adk-python#7205 · 2 commenti · 1 assegnatario ·
-
mcp
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
google/adk-python#7196 · 1 commento · 1 assegnatario ·
-
eval request clarification
Difficoltà 1/5 1-3 ore Idoneità per principianti 86/100
google/adk-python#7146 · 2 commenti · 1 assegnatario ·
Tutte le issue di google/adk-python
Issue simili
-
area: harness bug status: needs-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
Human-Agent-Society/reef#625 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 80/100
learningequality/kolibri#15351 · 2 commenti ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
-
Name consistency Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
eellak/triplestore#65 · 1 commento ·