Werkzeugkasten: Zugangsdaten je Einheit (#692)
A unit holds credentials for its members, by tool and setting - needed once,
not once per agent, and other units never get them.
- UnitConfig.credentials, protected by ConfigSecrets like every secret.
- OrgChart.ToolSettingsFor: an agent's own settings, completed by the nearest
unit up that holds the value; own non-empty values win; no tool is granted.
Used for runs, tool jobs and preflight probes.
- OrgAdministration.SetUnitCredential, PUT /organisation/units/{id}/credentials;
the view lists held settings, never values.
- Templates never carry unit credentials; they are named instead.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
661807b2d0
commit
9a265888f8
@@ -281,6 +281,24 @@ public sealed class ConfigSecretsTests : IDisposable
|
||||
agent.Tools["Mail"]["password"]!.ToString().ShouldNotBeNull().ShouldNotContain("mail-passwort");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Credentials_a_unit_holds_are_protected_whatever_their_name()
|
||||
{
|
||||
// #692: everything a unit holds for its members is a secret.
|
||||
var instance = new InstanceConfig();
|
||||
instance.Units.Add(new UnitConfig
|
||||
{
|
||||
Id = "purchasing", Name = "Purchasing",
|
||||
Credentials = new() { ["DirectAPI"] = new() { ["marketplaceKey"] = "mk-123" } }
|
||||
});
|
||||
|
||||
ConfigSecrets.Protect(instance);
|
||||
instance.Units[0].Credentials!["DirectAPI"]["marketplaceKey"].ShouldNotContain("mk-123");
|
||||
|
||||
ConfigSecrets.Unprotect(instance);
|
||||
instance.Units[0].Credentials!["DirectAPI"]["marketplaceKey"].ShouldBe("mk-123");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Nicht_geheime_Felder_bleiben_lesbar()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user