You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit fea11db
Browse filesBrowse the repository at this point in the historyBrowse files
Keep the 1.x defaults that existing agents rely on
- model.constraints top_p, top_k and stop_sequences reach every provider
whose API takes them; the others are reported by the run and by
validate, which also warns that current Claude models reject sampling
settings. The SDKs' constraints apply them too.
- TypeScript tool handlers get an AbortSignal again, aborted when the
turn is stopped or the session ends.
- A plugin's settings reach its script tools and hooks as environment
variables.
- compliance/regulatory-map.yaml and validation-schedule.yaml are summed
up in the system prompt again.
- .sh tools and hooks run under sh unless their #! line names another
shell; hooks get 10 seconds by default.
- Unknown gitagent.yaml keys are warnings instead of errors, and validate
checks the file.
- README: what changed from 1.x; BLUEPRINT D28.
Copy file name to clipboardExpand all lines: BLUEPRINT.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -131,6 +131,7 @@ Steps 4 to 9 repeat until the stop check accepts, the agent replies in conversat
131
131
| D25 | Sub-agents are warned as their turns run low, may be given their own turn limit (up to 100), and come back marked partial when they run out | A review cut off mid-step wastes its whole cost; a warned one hands back what it found, and the lead re-runs only what is marked partial |
132
132
| D26 | The `/tests` write guard applies to benchmark runs only | It protects graders' tests; in a user's project `/tests` is an ordinary path and a pattern such as `grep -v /tests/` must not be refused |
133
133
| D27 | One throttle per session: `max_parallel` is a ceiling, a rate-limit refusal halves the window, ten clean calls in a row give a slot back | The right number of parallel calls depends on the account's rate limit, which gitagent cannot know; backing off beats retrying blindly, and the ceiling stays the user's choice |
134
+
| D28 | Where a 1.x agent relies on a default, 1.x's default stays: `.sh` scripts under `sh`, 10-second hooks, every sampling setting a provider takes, plugin settings for plugin scripts, unknown `gitagent.yaml` keys as warnings; a setting that cannot be honoured is a warning, never silent | Existing agents must run unchanged, and a difference nobody is told about costs more than an old default |
134
135
135
136
**Left out on purpose:** critics that rewrite answers; best-of-N on benchmarks; memory or learning during a scored run; automated rewriting of the harness; masking every turn; third-party multi-provider frameworks; a web interface; voice; remote sandboxes.
Copy file name to clipboardExpand all lines: README.md
+14-3Lines changed: 14 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -533,13 +533,24 @@ gitagent 3 replaces the TypeScript packages (1.x and 2.x) with one binary. What
533
533
-**Agent folders.**`agent.yaml`, `SOUL.md`, `RULES.md`, `memory/`, `skills/`, `tools/`, `hooks/`, `schedules/`, `workflows/`, `agents/`, `config/` and `.env` are read as they were. 1.x settings such as `tools: [cli, read, write, memory]`, `runtime.timeout` and the 1.x `compliance` shape are accepted; `gitagent validate` points out the newer spelling as a warning, never an error.
534
534
-**Hook scripts.** They get the same JSON and answer the same way; output that is not an answer, or a script that crashes, allows the action with a warning, as before. Only hooks marked `compliance: true` or `fail_open: false`, which are new, block in those cases.
535
535
-**The CLI.**`gitagent`, `-p`, `-d`, `-m`, `-e`, `--repo`, `--pat`, `--session` and the REPL's slash commands work as before.
536
-
-**SDK code.**`query()`, `tool()`, hooks, `steer()`, `abort()`, the message types and the `repo` option are the same; the TypeScript package now needs the `gitagent` binary installed.
536
+
-**SDK code.**`query()`, `tool()`, hooks, `steer()`, `abort()`, the message types and the `repo` option are the same; the TypeScript package now needs the `gitagent` binary installed. A `tool()` handler still gets the arguments and an `AbortSignal`, and may return a string, 1.x's `{text, details}` or `{content, isError}`.
537
+
-**Model settings.**`model.constraints` (`temperature`, `max_tokens`, `top_p`, `top_k`, `stop_sequences`) are sent to the providers whose API takes them. OpenAI's API has no `top_k` or stop sequences, so those two are ignored there with a warning. Current Claude models reject `temperature`, `top_p` and `top_k`, so the model call fails; `gitagent validate` warns about them.
538
+
-**Scripts.** A declared tool or hook ending in `.sh` runs under `sh`, as before, unless its `#!` line names another shell. Hooks get 10 seconds unless `hooks.yaml` sets `timeout`. A plugin's settings reach its script tools and hooks as environment variables (see `plugin.yaml`'s `env` names, or `GITAGENT_PLUGIN_CONFIG` for all of them as JSON).
539
+
-**Compliance files.** The frameworks named in `compliance/regulatory-map.yaml` and the checks in `compliance/validation-schedule.yaml` are added to the system prompt, as before.
537
540
538
-
What changed: the binary must be installed (one `curl` line, above); `--voice` and the remote `--sandbox` are not part of gitagent 3; a plugin's `entry` JavaScript is not run (plugins contribute tools, skills, hooks and prompt text through files); usage errors exit with 2, provider failures with 3 and interrupts with 130 instead of 1.
541
+
### What changed
542
+
543
+
-**Install.** The binary must be installed (one `curl` line, above). The TypeScript and Python packages drive it.
544
+
-**Exit codes.** 1.x exited with 1 for every error. gitagent 3 exits with 0 when a run ends (also when it runs out of turns or time), 2 for usage and setup errors, 3 when the model provider fails, and 130 when the run is stopped. A script that only checks for a nonzero code works as before; one that checks for exactly 1 needs updating.
545
+
-**Not carried over.**`--voice`; the remote `--sandbox` (the binary prints a one-line note); a plugin's `entry` JavaScript (plugins contribute tools, skills, hooks and prompt text through files); the 1.x telemetry adapter (OTLP export replaces it).
546
+
-**Task list.** 1.x's `task_tracker` kept a searchable list of tasks. gitagent 3's `todo` is a plain checklist the agent rewrites whole; the name `task_tracker` still maps to it in tool lists and hooks.
547
+
-**Learning.** 1.x's online skill learning, which adjusted a skill's confidence after each use, is gone. Lessons are learned from finished runs instead (`learning: online` or `gitagent learn`, below) and go into the system prompt; skills are not changed.
548
+
-**Sandbox on macOS.** The sandbox is Linux-only (Landlock and seccomp). On macOS the agent's shell runs without one, where 1.x's remote sandbox worked on every system.
549
+
-**Scripts without a runtime.** 1.x ran every declared tool with `sh` unless `runtime` was set. gitagent 3 picks the interpreter by extension (`.py` with `python3`, `.js` with `node`, `.rb` with `ruby`, …), so such tools now run instead of failing.
539
550
540
551
## Configuration
541
552
542
-
gitagent reads `gitagent.yaml` from `--config`, else the project folder (`gitagent.yaml` or `.gitagent/gitagent.yaml`), else `~/.gitagent/gitagent.yaml`. The other files are looked up one by one in the same places (the config's folder, the project's `.gitagent/`, then `~/.gitagent/`, then the project's and home `.claude/`), and fall back to the built-in versions:
553
+
gitagent reads `gitagent.yaml` from `--config`, else the project folder (`gitagent.yaml` or `.gitagent/gitagent.yaml`), else `~/.gitagent/gitagent.yaml`. The other files are looked up one by one in the same places (the config's folder, the project's `.gitagent/`, then `~/.gitagent/`, then the project's and home `.claude/`), and fall back to the built-in versions. A key that `gitagent.yaml` does not know is ignored with a warning, and `gitagent validate` checks the project's copy.
0 commit comments