Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -370,7 +370,10 @@ the [security policy](SECURITY.md).
- `--model claude` or `--model codex` lets another coding agent drive the run. Its own
tools are denied, and it can call only the tools Flynn bridges to it, so every action
is still checked and recorded. This works on Linux, macOS and WSL2. Native Windows
refuses it, since Flynn cannot yet gate the child's network there.
refuses it, since Flynn cannot yet gate the child's network there. Flynn runs `claude`
and `codex` against homes of their own, kept in Flynn's data directory and separate from
yours. The first run prints the command that signs the CLI in with its own login;
Flynn never reads or copies the credential.

```sh
flynn --model claude # interactive session through the CLI
Expand Down
24 changes: 24 additions & 0 deletions cmd/flynn/claudehome_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package main

import (
"fmt"
"os"
"path/filepath"
"testing"
)

// TestMain points the claude and codex backends' homes at temporary directories for the
// whole package. Building either spawner creates its home, and without this every test that
// assembles one would create it under the real user's data directory.
func TestMain(m *testing.M) {
dir, err := os.MkdirTemp("", "flynn-agent-homes-")
if err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
claudeHome = func() string { return filepath.Join(dir, "claude") }
codexHome = func() string { return filepath.Join(dir, "codex") }
code := m.Run()
_ = os.RemoveAll(dir)
os.Exit(code)
}
267 changes: 189 additions & 78 deletions cmd/flynn/externagent.go

Large diffs are not rendered by default.

Loading
Loading