squad-kit 1.3.2 → 1.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/SECURITY.md CHANGED
@@ -54,6 +54,13 @@ Credit will be given in the release notes unless you prefer to remain anonymous.
54
54
  an agent changed outside its lane. Text from trackers and pasted messages reaches agents as data, never as orders.
55
55
  - **Agents get fixed tools, no free commands.** For screenshots, the app and the checks, an agent presses one of
56
56
  squad-kit's tools. squad-kit checks every field, does the job itself, and refuses and logs what breaks a check.
57
+ - **Each project has a network level, one policy for both guards.** **Standard** (the default): the agents' commands
58
+ reach any website but known-bad ones (tunnels, paste and file-drop sites, request catchers). **Strict**: only the
59
+ official package and download sites of common tools and the websites the project allows. **Off**: nothing outside this
60
+ computer. The known-bad sites are closed on every level and cannot be allowed. On Standard a harmful package can reach
61
+ the internet, but the keys and sign-ins it would take stay hidden. The project's own commands (tests, setup, the app)
62
+ stay open on Standard and Strict; on Off a Mac closes them to all but this computer, and Linux leaves them open. A
63
+ refused site never stops a story: the story gets a plain line and engineers a log on Harness → Safety.
57
64
  - **The project's own commands run in a guard** on Mac and Linux: the tests, setup, the app, the release pipeline and the
58
65
  commit hooks. **The guard stops accidents and most bad behaviour, but it is not a wall against code built on purpose to
59
66
  break out.** On a Mac its rules start from allowing everything and block a list. Use squad-kit on projects and tickets you
@@ -67,9 +74,14 @@ Credit will be given in the release notes unless you prefer to remain anonymous.
67
74
  a command starts, outside folders such as `node_modules`. One exception: the setup squad-kit runs in your own
68
75
  checkout after a merge reads that checkout's `.env` files, as it does when you run it yourself (a database setup
69
76
  needs them). It still reads no other `.env` file, key or sign-in.
70
- - Writing outside its copy, the proof folder, the temp folder and the package caches. `~/.cache` and
71
- `~/Library/Caches` stay read only: your own tools run programs from there. The copy cannot be moved, and git's own
72
- folder cannot be changed or moved, so nothing written there can make squad-kit's own git start a program.
77
+ - Writing outside its copy, the proof folder, the temp folder, the package caches and the project's own download
78
+ folder. `~/.cache`, `~/Library/Caches` and each tool's own folder in your home (`~/.gradle`, `~/.m2`, `~/.nuget`,
79
+ `~/.pub-cache` and the like) stay read only: your own tools run programs from there. Each tool is pointed at the
80
+ project's own folder instead, by its own setting. A tool that still writes in your home is run once more with a home
81
+ of the project's own, where your files are seen only through links that stay read only, and your keys and sign-ins
82
+ are left out. Programs you installed stay read only too: Flutter's SDK, a version manager's folder, and the Gradle your
83
+ project's wrapper uses when squad-kit links yours in. The copy cannot be moved, and git's own folder cannot be changed
84
+ or moved, so nothing written there can make squad-kit's own git start a program.
73
85
  - Reaching a container runtime. A container can mount any folder, so a command that reaches Docker could read everything
74
86
  above. Connections to the sockets of Docker Desktop, colima, lima, Rancher Desktop, OrbStack, Finch and Podman are
75
87
  refused where the guard knows them. A runtime that listens somewhere else is not covered. **1.2.0 and 1.2.1 did not
@@ -79,7 +91,8 @@ Credit will be given in the release notes unless you prefer to remain anonymous.
79
91
  visible at all.
80
92
 
81
93
  What it does not stop:
82
- - **The network.** A command can reach the network, so what it can read it can send.
94
+ - **The network.** A command can reach the network, so what it can read it can send. Only the Off network level
95
+ closes it, on a Mac, to all but this computer.
83
96
  - **Other local services.** On a Mac a command can still talk to other services on this computer, and to programs that
84
97
  listen on a local port. On Linux it can reach your session's bus and gpg agent under `/run/user`, and Docker's own port
85
98
  if you turned that on (on a Mac, ports 2375 and 2376 are refused).
@@ -88,6 +101,10 @@ Credit will be given in the release notes unless you prefer to remain anonymous.
88
101
  - **An ssh agent.** A command cannot read a key loaded in it, but it can ask the agent to use it.
89
102
  - **What a command leaves running, on a Mac.** A process that leaves its group lives on after the command, with the same
90
103
  guard around it, and can change the copy's files.
104
+ - **One story's downloads, in the next story.** A project's stories share one download folder, so only the first story
105
+ downloads. So a story's code could change what a later story's commands use, in the same guard. It never reaches what
106
+ you run yourself: your own checkout's setup after a merge, Your apps and the release pipeline use a download folder of
107
+ their own that no story writes in, and your own caches stay read only.
91
108
  - **The project's commit hooks run once, on a throwaway git folder.** squad-kit makes that folder outside the project for
92
109
  each run. It reads git's store of objects and writes only its own. Its settings are squad-kit's, with your branch by its
93
110
  real name and the repo's own filters, which run only in the guard. On Mac and Linux the real git folder stays read only to